Используя MAC, распечатайте документ Word, используя макрос в Excel
Я использую MAC и пытаюсь создать макрос, который будет печатать документ Word из моего листа Excel. Пользователю не нужно видеть слово document, ему просто нужно распечатать его.
Изучив некоторые из предыдущих вопросов, на которые были даны ответы на этом форуме, мне удалось написать код, который работал на моем ПК дома.
Однако я изменил путь к файлу и имя файла и скопировал код на свой MAC, который я использую на работе, и код больше не работает. Интересно, должен ли код быть другим при использовании MAC?
Я использую Microsoft Excel для Mac 2011, версия 14.6.8.
ans = MsgBox(Prompt:="Document 1", Buttons:=vbYesNo, Title:="Print")
If ans = vbYes Then
Dim objWord
Dim objDoc
Set objWord = CreateObject("Word.Application")
'Enter filename and path here
Set objDoc = objWord.Documents.Open("/Volumes/.../Document 1.docx")
objWord.Visible = False
objDoc.PrintOut
objWord.Quit
End If
Иногда код застревает на CreateObject("Word.Application")
и иногда код застревает там, где я написал путь к файлу и имя файла.
Я не совсем уверен, что правильно написал путь к файлу..?
Любая помощь приветствуется.
1 ответ
Ваш файл в сети?
Используйте этот код в Word VBE, чтобы получить путь к вашему файлу в ближайшем окне:
Sub get_path()
Debug.Print ActiveDocument.Path
End Sub
Попробуйте эту функцию, чтобы проверить, существует ли файл (не уверен, как заставить это работать на Mac...):
Public Function File_Exist(sFilePath As String) As Boolean
Dim sProv As String
On Error GoTo ErrorHandler
sProv = Dir(sFilePath, vbDirectory)
File_Exist = (sProv <> "")
On Error GoTo 0
Exit Function
ErrorHandler:
MsgBox Prompt:="Error on test file= " & sFilePath & vbCrLf & Err.Number & vbCrLf & Err.Description
End Function
И ваш код с некоторыми улучшениями:
ans = MsgBox(Prompt:="Document 1", Buttons:=vbYesNo, Title:="Print")
If ans = vbYes Then
Dim objWord As Object
Dim objDoc As Object
Dim sFilePath As String
''If the file is a network, you should start the path with //
sFilePath = "New_path_from_Word_immediate_window"
On Error Resume Next
Set objWord = GetObject(, "Word.Application")
If Err.Number <> 0 Then
Set objWord = CreateObject("Word.Application")
End If
On Error GoTo 0
objWord.Visible = False
'Enter filename and path here
'If File_Exist(sFilePath) Then
Set objDoc = objWord.Documents.Open(sFilePath)
objDoc.PrintOut
objDoc.Close
'Else
'MsgBox "File doesn't exist!" & vbCrLf & sFilePath, vbCritical + vbOKOnly
'End If
objWord.Quit
End If