У меня есть скрипт в Excel, который открывает определенный файл MS Word. Обе библиотеки Word и Excel включены. Вот код инициализации экземпляра Word:
Sub InitializeWord()
'Path for the upper-level folder
Dim RootPath As String
'Path for the destination of my document
Dim WordDocPath As String
RootPath = Left(ActiveWorkbook.Path, InStrRev(ActiveWorkbook.Path, "\"))
WordDocPath = RootPath & "Templates\" & "ÎÌÄ.docm"
'Try to get a reference to existing Word instance
On Error Resume Next
Set WordApp = GetObject(, Word.Application)
'If WordApp still references nothing - create a new instance of WordApp and open the document.
If WordApp Is Nothing Then
Set WordApp = CreateObject("Word.Application")
'word will be closed while running
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open(WordDocPath)
'Else search open documents for the file you need and reference it, if there's none - open it.
Else
Dim OpenedDoc As Object
For Each OpenedDoc In Word.Documents
If StrComp(OpenedDoc.FullName, WordDocPath, vbTextCompare) = 0 Then
Set WordDoc = OpenedDoc
Exit For
End If
Next OpenedDoc
If WordDoc Is Nothing Then
Set WordDoc = Word.Documents.Open(WordDocPath)
End If
End If
Set Headers = WordDoc.SelectContentControlsByTitle("DocHeader")(1)
WordApp.Visible = True
End Sub
Скрипт правильно создает экземпляр слова, когда его нет, но когда приложение Word уже открыто во время выполнения, скрипт не может получить Word.Application
Объект и пытается открыть документ во второй раз. Отключение строки On Error Resume Next
приводит к ошибке выполнения «Компонент ActiveX не может создать объект».