Delphi и Word. Создание, редактирование, открытие документа Word в Delphi

Текстовый редактор Word представляет собой сервер автоматизаций (COM-сервер), который может получать и обрабатывать запросы от внешних программ, в том числе и написанных в Delphi.

Доступ к приложению Word осуществляется, как правило, посредством основных двух объектов: Word.Application и Word.Document. Они же обеспечивают доступ и к остальным объектам Word: тексту, таблицам, кнопкам, меню.

Самый лёгкий, но одновременно и самый медленный по производительности способ работы с COM-сервером Word базируется на использовании переменных Variant.

Для использования метода Variant, нужно указать в разделе uses ссылку на модуль ComObj.

Работа с документом Word в Delphi. Видео

Обработка документов Word в Delphi. Примеры

Как уже упоминалось, для взаимодействия с COM-сервером Word нам в первую очередь нужно подключить модуль ComObj. Поэтому не забудьте в uses дописать ComObj.

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ComObj; // подключаем модуль ComObj

Также, нужно объявить глобальную переменную типа OleVariant.

var
  Form1: TForm1;
  Word:OleVariant; // объявляем переменную для доступа к объекту MS Word

Как создать документ Word

procedure TForm1.Button1Click(Sender: TObject);
begin
  Word:=CreateOleObject('Word.Application'); // создаём приложение Word
  Word.Visible:=True; // делаем приложение видимым
  Word.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam); // создаём документ Word
end;

Как открыть документ Word

procedure TForm1.Button1Click(Sender: TObject);
begin
  Word:=CreateOleObject('Word.Application'); // создаём приложение Word
  Word.Documents.Open('D:\\test.docx'); // открываем файл
  Word.Visible:=True; // делаем приложение видимым
  Word:=Unassigned; //Значение Unassigned показывает, что переменная является нетронутой, т.е. переменной еще не присвоено значение. Оно автоматически устанавливается в качестве начального значения любой переменной с типом Variant.
end;

Как записать текст в документ Word

procedure TForm1.Button1Click(Sender: TObject);
var
  s:String; // объявляем переменную в которой будет храниться нужный нам текст
begin
  s:='Этот текст мы записываем в документ Word';
  Word:=CreateOleObject('Word.Application'); // создаём приложение Word
  Word.Visible:=True; // делаем приложение видимым
  Word.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam); // создаём документ Word
  Word.ActiveDocument.Range.InsertAfter(s); // записывает содержимое переменной s в документ Word
end;

Как закрыть документ Word

procedure TForm1.Button2Click(Sender: TObject);
begin
  Word.Quit; // выход из Word
  Word:=UnAssigned; // очищаем память от объекта Application
end;

Как закрыть Word с сохранением изменений

procedure TForm1.Button2Click(Sender: TObject);
begin
  Word.ActiveDocument.Close(True);
end;

АВТОРИЗАЦИЯ