Проблемы с управлением 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
Другие вопросы по тегам