2015-12-15 2 views
0

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

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 

ответ

0

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

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

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

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

0

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

"OSX: Местно: Prop: Prop.docm" или если вы хотите отделенный:

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

Скажите, если он работал :)

Смежные вопросы