【问题标题】:Using Application.Run in Excel VBA when workbook name contains spaces当工作簿名称包含空格时,在 Excel VBA 中使用 Application.Run
【发布时间】:2019-08-09 20:58:20
【问题描述】:
Application.Run "MyWorkBook.xls!Macro1"

会起作用(在MyWorkBook.xls 文件中运行名为Macro1 的宏)。

Application.Run "My Work Book.xls!Macro1"

将不起作用(如果工作簿名称包含空格,Excel 会显示“找不到宏”)。

我只是花了几个小时弄清楚是空间导致了这个问题......

有没有办法在不重命名文件的情况下解决这个问题?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    在文件名周围使用单引号:

    Application.Run "'My Work Book.xls'!Macro1"
    

    【讨论】:

    • 我的荣幸。我去过:)
    • 一般来说,在 Excel 中处理文件名时总是使用引号会更好
    • 我发现文件名中的破折号('-')也有同样的问题。很烦人
    • 我发现如果宏名称中包含下划线 (_),这同样适用于宏名称。出于某种原因,这只是在使用 Windows 10 的用户中出现的。
    【解决方案2】:

    将每个空格替换为%20

    Application.Run "My%20Work%20Book.xls!Macro1"
    

    【讨论】:

    • 我知道这都是很久以前的事了,但我认为这是一个完全有效的答案。
    • 是的,这绝对是问题的答案,而不是评论,@ClaricPWI 在这里是错误的
    • 是的,这是一个答案,不如@e.James 有用,因为您可能会替换很多字符
    【解决方案3】:

    这里 File_name 是您要为其调用宏的文件的名称

    • Application.run "'"+File_name+"'"+"!Macro"
    • 双引号之间的单引号后跟 + 文件名 + 双引号之间的单引号 + 双引号之间的宏名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 2015-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 2017-09-13
      相关资源
      最近更新 更多