Как исправить ошибку «Ошибка выполнения 429: ActiveX не может создать объект» в VBA - PullRequest
1 голос
/ 11 июня 2019

Этот макрос Excel ниже должен преобразовать все .Docx в выбранную папку в .Pdf

Вот строка кода, которая предоставляет мне код ошибки 429, но несколько часов назад эта же строка кода работала.

Documents.Open (filePath & currFile) 'Error Code 429

Здесь полный код макроса

Sub ConvertDocxInDirToPDF()

Dim filePath As String
Dim currFile As String

filePath = ActiveWorkbook.Path & "\"
MsgBox filePath
currFile = Dir(filePath & "*.docx")

Do While currFile <> ""

    Documents.Open (filePath & currFile) 'Error Code 429

    Documents(currFile).ExportAsFixedFormat _
        OutputFileName:=filePath & Left(currFile, Len(currFile) - Len(".docx")) & ".pdf", _
        ExportFormat:=17
    Documents(currFile).Close

    currFile = Dir()

Loop

Application.ScreenUpdating = True

End Sub

Существует ли простой способ заставить этот макрос работать и исправить эту ошибку.

С уважением.

1 Ответ

3 голосов
/ 11 июня 2019

Documents.Open - это метод объекта Documents, которому для работы нужна «Библиотека объектов MS Word», без явного обращения к объекту слова:

enter image description here

Что это значит?Если ссылка Microsoft Word 1X.0 проверена (VBE> Доп. Функции> Библиотеки), то приведенный ниже код работает вполне нормально:

Sub TestMe()

    Dim filePath As String
    filePath = ThisWorkbook.Path & "\"
    Dim currFile As String
    currFile = Dir(filePath & "*.docx")

    Dim wrdDoc As Object
    Documents.Open filePath & currFile

End Sub

Если «Библиотека объектов MS Word» не указана, то с поздним связываниемеще можно отнести к объекту.(Позднее связывание: CreateObject("Word.Application")):

Sub TestMe()

    Dim filePath As String
    filePath = ThisWorkbook.Path & "\"
    Dim currFile As String
    currFile = Dir(filePath & "*.docx")

    Dim wrdApps As Object
    Set wrdApps = CreateObject("Word.Application")
    wrdApps.Documents.Open (filePath & currFile)

End Sub

При необходимости Documents.Open может вернуть объект документа:

Sub TestMe()

    Dim filePath As String
    filePath = ThisWorkbook.Path & "\"
    Dim currFile As String
    currFile = Dir(filePath & "*.docx")

    Dim wrdApps As Object
    Set wrdApps = CreateObject("Word.Application")

    Dim wrdDoc As Object
    Set wrdDoc = wrdApps.Documents.Open(filePath & currFile)

End Sub
...