Delphi. OLE Automation (COM). MS Word. Группа функций уровня: Приложение — Документ

На предыдущую страницу…


  • 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