通过EPPlus调用VBA宏

时间:2016-06-23 10:56:12

标签: c# excel vba excel-vba epplus

我将简单的VBA代码放在" F:\ Inetpub \ wwwroot \ webfolder \ testWB.xlsm"中。宏看起来像:

Sub TestProcedure()
  MsgBox "Hello"
End Sub

如何通过C#ExcelPackage调用此过程?

我所拥有的只是:

FileInfo newFile = new FileInfo(@"F:\Inetpub\wwwroot\webfolder\testWB.xlsm");
ExcelPackage pck = new ExcelPackage(newFile);

但是我还没有找到任何地方,我怎么能通过c#代码调用我的vba程序。我需要使用ExcelPackage,因为Excel.Interop不能在我的IIS Windows服务器上运行。

非常感谢您的任何建议。

2 个答案:

答案 0 :(得分:0)

你不能。当您告诉它使用"运行宏"时,Excel会调用此过程。或捷径。在EPPlus的上下文中,宏代码只是无意义的文本。

答案 1 :(得分:0)

具体答案:来自Epplus WIKI

  

EPPlus支持创建,读取和写入VBA。不支持VBA代码的执行/解释。

摘自here

  

执行VBA代码VBE是必需的。 VBE随Excel一起安装。

所以答案是,如果没有安装Excel,就无法从C#运行VBA宏。您可以尝试以下解决方法:

  • 将VBA代码替换为C#代码。例如:如果您的宏将绿色背景置于具有正值的单元格中,而将红色背景置于具有负值的单元格中,请以编程方式进行操作。
  • 将您的代码放入Open事件,以便在打开Excel文件时自动运行。由于Excel安全配置,这可能无法正常工作。 (我在StackOverflow的这里读过一个示例)。