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.