在Excel VBA中使用Application.Run当工作簿名称包含空格

11
Application.Run "MyWorkBook.xls!Macro1"

将会运行MyWorkBook.xls文件中名为Macro1的宏。

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

如果工作簿名称包含空格,Excel会提示"找不到宏",从而导致以下代码无法正常运行。

我花了几个小时才发现这是由于空格引起的问题...

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

3个回答

22

使用单引号来包围文件名:

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

一般来说,在处理Excel文件名时,最好总是使用引号。 - Ahmad
我也发现文件名中的破折号('-')也会出现相同的问题。非常令人恼火。 - David Hayes
我发现如果宏名称中有下划线(_),同样适用。由于某种原因,这仅出现在Windows 10用户中。 - CarloC

6

将每个空格替换为%20

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

9
我知道这些都发生在很久以前,但我认为这是一个完全有效的答案。 - e.James
是的,这绝对是对问题的回答,而不是评论。@ClaricPWI在这里是错误的。 - cowls
是的,这是一个答案,不像@e.James的那么有用,因为你可能会替换很多字符。 - GôTô

1

这里的File_name是您想要调用宏的文件名。

  • Application.run "'"+File_name+"'"+"!Macro"
  • 双引号之间的单引号,紧随其后的加上File_name,再加上双引号之间的您的宏名称。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接