代码之家  ›  专栏  ›  技术社区  ›  Edwin Yip

MS Word OLE-如何在不引发异常的情况下访问ActiveDocument?

  •  1
  • Edwin Yip  · 技术社区  · 15 年前

    在Word Automation中,通过OLE访问ActiveDocument属性时,如果当前没有可用的可见文档(至少在Delphi中),则会引发异常,因此,我的目标是执行一些测试,如IsActiveDocumentValid,如何在不引发异常的情况下执行此操作?谢谢您!

    1 回复  |  直到 15 年前
        1
  •  1
  •   Sertac Akyuz    15 年前

    这个异常是由自动化服务器本身引发的,您不能阻止它。但是你可以得到一个开放的计数 Documents 访问之前 ActiveDocument ;

    WordApplication.Documents.Count
    

    如果“count”为0,则表示没有可用的文档。

    编辑: 或者,您可以静默地处理特定的异常,例如(delphi代码);

    function ActiveDocumentExists(WordApplication: Variant): Boolean;
    begin
      Result := True;
      try
        WordApplication.ActiveDocument.Activate;
      except on E: EOleException do
        if E.ErrorCode = LRESULT($800A1098) then
          Result := False;
      end;
    end;