Excel VBA переделка для MAC

У меня есть следующий скрипт, который отлично работает в среде Windows. После сохранения файла Excel он откроет назначенный текстовый документ, обновит ссылки, а затем сохранит его в виде PDF-файла в той же папке, что и имя ячейки C6. К сожалению, он мне нужен и для работы на MAC. Я изменил путь с "c:\Prop" на "/Prop/" (я создал папку в корне Mac HD под названием Prop), и она работает до точки, где открывается слово, но затем я получаю неподдерживаемый функциональное сообщение... кто-нибудь знает, какая другая функция для офиса MAC 16???

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim objWord, objWordDoc, objField As Object
    Dim boolSuccess, boolUpdated As Boolean
    Dim strFolderPath, strWordFileName, strPdfFileName, strOutput As String

    strFolderPath = "c:\Prop\"
    strWordFileName = "Prop.docm"
    strPdfFileName = ActiveWorkbook.Sheets(1).Cells(6, 3).Value & ".pdf"
    strOutput = "There are problems with updating the next fields:" & vbCrLf
    boolSuccess = True

    On Error GoTo Error
        Err.Clear

        Set objWord = CreateObject("Word.Application")
        Set objWordDoc = objWord.Documents.Open(strFolderPath & strWordFileName)

        If Not objWordDoc Is Nothing Then
            For Each objField In objWordDoc.Fields
                boolUpdated = objField.Update
               If Not boolUpdated Then
                    boolSuccess = False
                    strOutput = strOutput & "Field" & CStr(objField.Index) & vbCrLf
                End If
            Next
            objWordDoc.Save
            objWordDoc.ExportAsFixedFormat strFolderPath & strPdfFileName, 17
            objWordDoc.Close
            If boolSuccess Then
                MsgBox strWordFileName & " was updated successfully and " & strPdfFileName & " was saved in " & strFolderPath
            Else
                MsgBox strOutput
                MsgBox strWordFileName & " was updated with problems and " & strPdfFileName & " was saved in " & strFolderPath
            End If
        End If
Error:
    If Err.Description <> "" Then
        MsgBox "Error: " & Err.Description, , "Error"
    End If

    objWord.Quit

    Set objWordDoc = Nothing
    Set objWord = Nothing
End Sub

2 ответа

CreateObject прекрасно работает со мной на Mac с Office 2011... Я думаю, что проблема заключается в строке пути. На mac пути разные. Я считаю, что это должно быть что-то вроде этого:

"OSX: Local: Prop: Prop.docm" или, если вы хотите, чтобы он отделился:

strFolderPath = "OSX:Local:Prop:"
strWordFileName = "Prop.docm"

Подскажите, сработало ли это:)

CreateObject функция является частью библиотеки сценариев Windows, она не существует в Mac OSX.

Вы должны иметь больше удачи, ссылаясь на Microsoft Word Object (v.x.x) Library (инструменты -> Ссылки) и не создание объекта во время выполнения:

dim objWord as New Word.Application
dim objWordDoc as Word.Document
Set objWordDoc = objWord.Documents.Open(strFolderPath & strWordFileName)

Таким образом, вы не полагаетесь на библиотеки Windows.

Другие вопросы по тегам