Проблемы с управлением Excel с помощью Word с помощью VBA; Позднее связывание и раннее связывание не работают
У меня возникли проблемы с использованием автоматизации для управления Excel из Word, что должно быть возможно из GetObject
функция.
Я использую Office 2011 для Mac. Моя цель - взять информацию из текстового документа и вставить ее в книгу Excel после самой последней такой записи. Слово doc является генератором контрактов. Каждая рабочая тетрадь будет содержать сведения о 30 связанных контрактах. Логика, которую я хотел бы использовать, состоит в том, чтобы позволить пользователю ввести имя для рабочей книги, и тогда VBA получит полное имя пути и путь, а затем сможет управлять книгой. Тем не менее, я не могу сделать более простой случай работы.
Для начала я даже не могу получить слово, чтобы контролировать существующий в настоящее время экземпляр Excel (хотя CreateObject("Excel.Application")
работает. Я попробовал раннее связывание и получил:
ошибка автоматизации (91)
Вот код, который производит это:
Option Explicit
Sub WorkOnAWorkbook()
Dim Oxl As Excel.Application
Dim owB As Excel.Workbook
Set Oxl = GetObject(, "Excel.Application")
Set owB = Oxl.Workbooks.Open(fileName:="Macintosh HD:Users:User:Desktop:Test.xlsx")
End Sub
Я также попытался использовать позднюю привязку, и это дает мне:
ошибка 424 (требуется объект)
Вот код, который производит это:
Option Explicit
Sub WorkOnAWorkbook()
Dim Oxl As object
Dim owB As object
Set Oxl = GetObject(, "Excel.Application")
Set owB = Oxl.Workbooks.Open(fileName:="Macintosh HD:Users:User:Desktop:Test.xlsx")
End Sub
Я перешел к инструментам-> ссылки и добавил в Excel объекты, так что я не уверен, что эта простая часть программы даже не будет работать.
Я был бы рад, если бы кто-нибудь помог мне заставить эту часть работать и, в идеале, ту часть моей программы, которая позволит мне собрать имя рабочей книги (через поле ввода получить полное имя введенного файла и затем контролировать эта книга. Все остальное работает в моей программе, но я не могу заставить этот ключевой мост между Word и Excel функционировать.
1 ответ
Пытаться:
Set owB = Oxl.Workbooks.Open(FileName:="\Macintosh HD\Users\User\Desktop\Test.xlsx")
Или, если это не сработает, попробуйте:
Dim myFileName As String
myFileName = Application.GetOpenFilename
Debug.Print myFileName
If myFileName <> "" Then
Set owB = Oxl.Workbooks.Open(FileName:=myFileName)
End If
Также для раннего связывания вам не нужен GetObject, если вы используете ключевое слово New в своем выражении Dim:
Sub WorkOnAWorkbook()
Dim Oxl As New Excel.Application
Dim owB As Excel.Workbook
'Not needed Set Oxl = GetObject(, "Excel.Application")
Set owB ...
End Sub