MS Word OLE - Как получить доступ к ActiveDocument без исключения? - PullRequest
1 голос
/ 12 сентября 2010

В Word автоматизации с помощью OLE, при доступе к свойству ActiveDocument будет сгенерировано исключение, если в настоящее время нет видимого документа (по крайней мере, в Delphi), поэтому моя цель - выполнить какой-то тест, например IsActiveDocumentValid, как это сделать без поднимать исключение? Спасибо!

1 Ответ

1 голос
/ 13 сентября 2010

Исключение составляет сам сервер автоматизации, вы не можете предотвратить это.Однако вы можете получить счетчик открытых Documents перед доступом к ActiveDocument;

WordApplication.Documents.Count

Если «Счет» равен 0, если нет доступных документов.

edit: Кроме того, вы можете молча обработать конкретное исключение, например (код 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;
...