Используя 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
Другие вопросы по тегам