我尝试使用标准的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")
这只是我还是这很奇怪?谁能想到一个解决方法?
答案 0 :(得分:4)
将工作簿名称包装在quotes
中string macro = string.Format("'{0}'!{1}", workbook.Name, macroName);
Application.Run(macro);