使用具有特殊字符的Path执行objExcel.Application.Run时出现问题

问题描述

下面是我必须在另一个名为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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...