- Word_Open — открыть приложение MS Word;
- Word_Version — получить версию приложения MS Word;
- Word_Quit — закрыть приложение MS Word;
- Word_Doc_Add — создать (добавить) новый документ MS Word;
- Word_Doc_Load — загрузить документ MS Word из файла;
- Word_Doc_SaveAs — сохранить заданный документ MS Word в файл с заданным именем;
- Word_Doc_SaveAs_Ext — сохранить заданный документ MS Word в файл с заданным именем (расширенный вариант);
- Word_Doc_Save — сохранить заданный документ MS Word в файл (имя файла определено одной из функций: Word_Doc_Load, Word_Doc_SaveAs или Word_Doc_SaveAs_Ext);
- Word_Doc_Print — распечатать заданный документ MS Word;
- Word_ActiveDoc_Close — закрыть активный документ MS Word.
Ссылку на файл ZIP-архива с примером — см. в конце этого документа.
function Word_Open(YesDocAdd:boolean=true; YesVisible:boolean=true): variant; //открыть приложение MS Word //YesDocAdd - если =TRUE, то после открытия автоматически создается новый документ //YesVisible - если =TRUE, то после открытия окно программы MS Word становится видимым //Возвращаемое значение - ссылка на MS Word begin Result:=CreateOleObject('Word.Application'); if not VarIsEmpty(Result) then begin if YesVisible then begin Result.Visible:=True; end else begin Result.Visible:=False; end; if YesDocAdd then begin Word_Doc_Add(Result); end; end; end;
function Word_Version(msWord:variant): string; //получить версию приложения MS Word //msWord - ссылка на MS Word (см. Word_Open) //Возвращаемое значение - версия MS Word begin Result:=''; if not VarIsEmpty(msWord) then begin Result:=trim(msWord.Version); end; end;
function Word_Quit(Var msWord:variant; YesAlertForSave:boolean=false): boolean; //закрыть приложение MS Word //msWord - ссылка на MS Word (см. Word_Open) //YesAlertForSave - если =TRUE (и в открытом документе остались несохраненные данные), то MS Word выдает запрос на их сохранение //Возвращаемое значение - результат операции begin Result:=false; if not VarIsEmpty(msWord) then begin TRY msWord.Quit(YesAlertForSave); Result:=true; EXCEPT END; end; msWord:=UnAssigned; end;
function Word_Doc_Add(msWord:variant) : variant; //создать (добавить) новый документ MS Word //msWord - ссылка на MS Word (см. Word_Open) //Возвращаемое значение - ссылка на новый документ begin Result:=UnAssigned; if not VarIsEmpty(msWord) then begin Result:=msWord.Documents.Add; end; end;
function Word_Doc_Load(msWord:variant; fn:string): variant; //загрузить документ MS Word из файла //msWord - ссылка на MS Word (см. Word_Open) //fn - полное имя файла документа //Возвращаемое значение - ссылка на загруженный документ begin Result:=UnAssigned; if not VarIsEmpty(msWord) then begin fn:=trim(fn); if length(fn)>0 then begin if FileExists(fn) then begin Result:=msWord.Documents.Open(fn); end; end; end; end;
function Word_Doc_Save(vDoc:variant): boolean; //сохранить заданный документ MS Word в файл (имя файла определено одной из функций: Word_Doc_Load, Word_Doc_SaveAs или Word_Doc_SaveAs_Ext) //vDoc - ссылка на документ MS Word (см. Word_Doc_Add, Word_Doc_Load) //Возвращаемое значение - результат операции begin Result:=false; if not VarIsEmpty(vDoc) then begin vDoc.Save; Result:=true; end; end;
function Word_Doc_SaveAs(vDoc:variant; fn:string; YesRewrite:boolean=false): boolean; //сохранить заданный документ MS Word в файл с заданным именем //vDoc - ссылка на документ MS Word (см. Word_Doc_Add, Word_Doc_Load) //fn - полное имя нового файла документа //YesRewrite - если =TRUE и файл с именем fn уже существует, то он "перезапишется" //Возвращаемое значение - результат операции Var Yes:boolean; begin Result:=false; fn:=trim(fn); if length(fn)>0 then begin Yes:=true; if not YesRewrite then begin if FileExists(fn) then Yes:=false; end; if Yes then begin if not VarIsEmpty(vDoc) then begin vDoc.SaveAs(fn); Result:=true; end; end; end; end;
function Word_Doc_SaveAs_Ext(vDoc:variant; fn:string; FormatDoc:integer=wdFormatDocumentDefault; YesRewrite:boolean=false): boolean; //сохранить заданный документ MS Word в файл с заданным именем (расширенный вариант) //vDoc - ссылка на документ MS Word (см. Word_Doc_Add, Word_Doc_Load) //fn - полное имя нового файла документа //FormatDoc - формат документа (см. значения констант wdFormat* здесь) //YesRewrite - если =TRUE и файл с именем fn уже существует, то он "перезапишется" //Возвращаемое значение - результат операции Var Yes:boolean; begin Result:=false; fn:=trim(fn); if length(fn)>0 then begin Yes:=true; if not YesRewrite then begin if FileExists(fn) then Yes:=false; end; if Yes then begin if not VarIsEmpty(vDoc) then begin vDoc.SaveAs(fn, FileFormat:=FormatDoc); Result:=true; end; end; end; end;
function Word_Doc_Print(vDoc:variant): boolean; //распечатать заданный документ MS Word //vDoc - ссылка на документ MS Word (см. Word_Doc_Add, Word_Doc_Load) //Возвращаемое значение - результат операции begin Result:=false; if not VarIsEmpty(vDoc) then begin vDoc.PrintOut; Result:=true; end; end;
function Word_ActiveDoc_Close(msWord:variant; YesSave: boolean=true): boolean; //закрыть активный документ MS Word //msWord - ссылка на MS Word (см. Word_Open) //YesSave - если =TRUE (и в открытом документе остались несохраненные данные), то MS Word сохранит данные или (имя файла документа не задано) выдает запрос на выбор файла //Возвращаемое значение - результат операции begin Result:=false; if not VarIsEmpty(msWord) then begin if not VarIsEmpty(msWord.ActiveDocument) then begin if YesSave then begin msWord.ActiveDocument.Close; end else begin msWord.ActiveDocument.Close(SaveChanges:=0); end; Result:=true; end; end; end;
Документ в формате PDF можно скачать здесь: OLE_Word_Ex_01.pdf.
Дополнительно к этому документу прилагаются исходные тексты как самих функций (проект в среде Delphi 10.2 Tokyo), так и программа тестирования (с исходниками, ясное дело).
Имя файла ZIP-архива: OLE_Word_Ex_01_pas.zip (скачать).
Дата: 16.10.2022