Текстовый редактор 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;