ErrorMakeXLObject:
If Err <> 0 Then
strMsg = "Произошла непредвиденная ошибка. "
strMsg = strMsg & “Ошибка = ” & Err
MsgBox prompt:=strMsg, Buttons:=vbExclamation, _ Title:= “Ошибка!”
End If
Resume ExitMakeXLObject
End Sub
В программе выполняется проверка существования файла OfficeSolutionsRpt.xls, если файл уже существует, его приходится удалять, чтобы предотвратить появление сообщения-запроса о перезаписи существующего файла. Обычный метод, применяемый для этого в Excel (присваивания Application.DisplayAlerts = False), не работает при использовании Automation. Другой путь (с помощью метода SendKeys) работает, только если объект-приложение Excel видим.
Для проверки, открыто ли окно Access, используется вызов функции FindWindow Win32 API, которая должна быть описана следующим образом:
Declare Function FindWindowByClass Lib "user32" _
Alias "FindWindowA" _
(ByVal lpClassName As String, _
ByVal lpWindowName As Long) As Long
Функция CreateObject обычно запускает новый экземпляр приложения, на которое производится ссылка (как это делает и оператор Dim As New), но из этого правила есть исключение: некоторые приложения регистрируют себя в Реестре Windows как уникальные (single instance), а это означает, что одновременно не может быть запущено больше одного экземпляра приложения (для приложений такого типа новые экземпляры создаваться не будут, операторы будут ссылаться на запущенный экземпляр приложения). В Microsoft Office уникальными приложениями являются, например, Word и PowerPoint.