在C#中运行Excel宏在特定工作簿中失败

时间:2015-04-22 00:09:04

标签: c# excel vba

我尝试使用标准的Microsoft.Office.Interop.Excel库从C#在Excel工作簿中运行宏。在我的场景中,Excel的版本可以是2010年或2013年。

可能有多个工作簿为同一个Application对象打开,每个工作簿可能具有相同的宏名称,因此我明确地传入工作簿名称

string macro = string.Format("{0}!{1}", workbook.Name, macroName);
Application.Run(macro);

奇怪的是,如果工作簿名称中包含连字符,则会出现COMException:

Application.Run("My-Workbook!macro1")

但没有连字符就可以运行:

Application.Run("MyWorkbook!macro1")

这只是我还是这很奇怪?谁能想到一个解决方法?

1 个答案:

答案 0 :(得分:4)

将工作簿名称包装在quotes

string macro = string.Format("'{0}'!{1}", workbook.Name, macroName);
Application.Run(macro);