我正在使用MAC而我正在尝试创建一个将从Excel工作表中打印Word文档的宏。用户无需查看word文档,只需打印即可。
在查看了本论坛中回答的一些问题之后,我设法编写了一些在我家PC上运行的代码。
但是,我更改了文件路径和文件名,并将代码复制到我在工作中使用的MAC上,代码似乎不再起作用。我想知道使用MAC时代码是否必须不同?
我正在使用Microsoft Excel for 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")
,有时代码卡在我写入文件路径和文件名的地方。
我不完全确定我是否正确编写了文件路径。?
非常感谢任何帮助。
答案 0 :(得分:0)
您的文件是否在网络上?
在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