Ms word MS Word OLE-如何访问ActiveDocument而不引发异常?

Ms word MS Word OLE-如何访问ActiveDocument而不引发异常?,ms-word,automation,ole,Ms Word,Automation,Ole,在通过OLE的Word automation中,当访问ActiveDocument属性时,如果当前没有可用的可见文档(至少在Delphi中),将引发异常,因此,我的目标是进行一些测试,如IsActivedDocumentValid,如何在不引发异常的情况下进行测试?谢谢大家! 该异常是由自动化服务器本身引发的,您无法阻止它。但是,在访问ActiveDocument之前,您可以获得打开次数 WordApplication.Documents.Count 如果没有可用文档,则“计数”为0 编辑:

在通过OLE的Word automation中,当访问ActiveDocument属性时,如果当前没有可用的可见文档(至少在Delphi中),将引发异常,因此,我的目标是进行一些测试,如IsActivedDocumentValid,如何在不引发异常的情况下进行测试?谢谢大家!

该异常是由自动化服务器本身引发的,您无法阻止它。但是,在访问
ActiveDocument
之前,您可以获得打开次数

WordApplication.Documents.Count
如果没有可用文档,则“计数”为0

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


您好,Sertac,谢谢,但是如果“Count”为1,并且该文档不可见,则ActiveDocument仍然为零。@Edwin-我不知道
文档集包含不可见文档。无论如何,看看答案的更新是否适合您的需要。。嗨,Sertac,谢谢您的帮助,但是我尝试过这个技巧,之前我已经想忽略那个异常,try。。except块无法捕获那个异常。@Edwin-我硬编码的错误代码可能在不同的office版本之间有所不同。但是,否则,如果有异常,那么您应该能够捕获它。祝你好运嗨,塞塔克,非常感谢你!我又试了一次,成功了!我不知道上次尝试时为什么没有捕获异常,编译器/链接器设置是否与此有关?
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;