问题描述
下面是我必须在另一个名为MyMacro
的工作簿中运行宏Test File Sep20.xlsm
的代码。这段代码可以正常工作。
Sub Run_Macro()
Set objExcel = CreateObject("Excel.Application")
Path = "F:\RO\Data Management_Mar20"
If Dir(Path,vbDirectory) = "" Then
MsgBox "File does not exist !!!"
End
Else
objExcel.Application.Run _
"'F:\RO\Data Management_Mar20\Test File Sep20.xlsm'!Module1.MyMacro"
End If
objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing
End Sub
但是,如果我在工作簿名称和路径中添加单引号,即'
和或.
并适当地更改代码(请参见下面的代码,带有备注),则会发出运行时错误' 1004'说工作簿中的宏可能不可用,或者所有宏都可能被禁用
Sub Run_Macro()
Set objExcel = CreateObject("Excel.Application")
Path = "F:\RO\Data Management_Mar'20" 'Added single quote in month
If Dir(Path,vbDirectory) = "" Then
MsgBox "File does not exist !!!"
End
Else
'Run-time error '1004' at below line
objExcel.Application.Run _
"'F:\RO\Data Management_Mar'20\ _
1.0 Test File Sep'20.xlsm'!Module1.MyMacro" 'Added . & ' in path
End If
objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing
End Sub
我尝试了各种方式,例如写Chr(39)
而不是'
或在objExcel.Application.Run
的{{1}}之后包装内容,但无济于事。
在我精疲力尽之后,在这里寻求支持以解决"" ""
和'
的威胁。
解决方法
下面提到的提姆·威廉姆斯(Tim Williams)在上面的评论部分提供的this link中提到的注释确实产生了奇迹。
注意:如果您的工作簿名称包含撇号(')字符(例如在“ Joe's Workbook.xls”中),则需要将撇号加倍,例如Application.Run“'Joe's Workbook'!MyMacroName”
更正后的代码是:
f-score