手动关闭后调用Word应用程序会生成“RPC服务器不可用”错误

时间:2014-09-10 03:44:08

标签: delphi office-automation word-automation

我的表单上有TWordApplication个名为App的组件。它的ConnectKind属性设置为ckRunningOrNewAutoConnect属性设置为True。当我的程序完成后,Word窗口出现在屏幕上,完成一些任务后我关闭它。即使我致电App,下次调用Disconnect也会产生主题错误。

procedure ReportButtonClick(Sender: TObject);
var
  Doc: _Document;
  { Some other variables }
begin
  App.Disconnect; // calling after closing produces error
  App.Connect;
  Doc := App.Documents.Add('path_to_template', EmptyParam, EmptyParam, EmptyParam);
  { Working with Doc }
  App.Visible := True;
end;

似乎很明显我不应该关闭Word,但我的客户认为保持Word始终打开对他们来说并不方便。我试图抓住异常但没有成功。

我应该如何处理这种情况?

1 个答案:

答案 0 :(得分:2)

使用D7和Word2007,以下代码可以阻止用户关闭MS Word,方法是单击标题栏上的[x]或从菜单中关闭:

procedure TDefaultForm.WordApplication1DocumentBeforeClose(ASender: TObject;
    const Doc: _Document; var Cancel: WordBool);
begin
  Cancel := True;
end;

,但显然你想让用户知道为什么会这样。

但是,如果没有打开文档,它不会阻止Word关闭。

作为防止Word关闭的替代方法,显然您可以禁用应用程序的Word自动执行功能,完成正在进行的任何操作或完全关闭您的应用程序。我假设您知道如何在Word中获取活动文档,当前文本选择等。