在delphi中添加新的word文档

use*_*242 2 delphi ms-word delphi-xe

我正在建立一个delphi表单,在MS Word中添加一个新的word文档,等待用户插入文本和编辑文档,保存文件并退出MS Word,然后获取文件名和文件路径.

 WordApp := CreateOleObject('Word.Application');
 WordApp.Visible := True;
 Doc := WordApp.Documents.add();
Run Code Online (Sandbox Code Playgroud)

等待用户插入文本并编辑文档并保存文件并退出表格MS Word THEN

Doc.Save;
DocName := Doc.Name;
Docpath := IncludeTrailingPathDelimiter(Doc.path) + DocName;

with ZipForge1 do
begin
  FileName := Zipfilename;
  OpenArchive;
  Options.StorePath := spNoPath;
  AddFiles(Docpath);
  CloseArchive;
end;
Run Code Online (Sandbox Code Playgroud)

Dav*_*nan 5

您可以编写自己的事件接收器来收听Word应用程序的OnQuit事件.但是,切换到早期绑定的COM会更容易.找到的导入类型库Word2000.pas包含您需要的所有内容.

  • 使用TWordApplication你的应用程序对象.
  • 将处理程序分配给应用程序对象的事件.
  • 根据您想要做的事情,看起来最适用的事件是OnDocumentBeforeCloseOnQuit.

为了说明,这是我可以设计的最简单的例子:

uses
  Word2000;

procedure TForm1.Button1Click(Sender: TObject);
var
  WordApp: TWordApplication;
begin
  WordApp := TWordApplication.Create(Self);
  WordApp.Visible := True;
  WordApp.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
  WordApp.OnQuit := WordAppQuit;
  WordApp.OnDocumentBeforeClose := WordDocumentBeforeClose;
end;

procedure TForm1.WordAppQuit(Sender: TObject);
begin
  ShowMessage('Word application quit');
end;

procedure TForm1.WordDocumentBeforeClose(ASender: TObject; 
  const Doc: WordDocument; var Cancel: WordBool);
begin
  ShowMessage(Doc.Name + ' closed');
end;
Run Code Online (Sandbox Code Playgroud)