使用C#运行Excel工作表的VBAmacros

是否有可能编写一个WPF C#应用程序,可以从一个单独的文本文件中加载和读取VBAmacros,打开现有的Excel工作簿,并处理VBAmacros?

我不是试图将VBA转换为C#或从C#生成VBA。 应用程序,VBAmacros文本文件(VBA被提取并分别保存在文本文件中)和Excel全部由不同的人分别写入/生成。

应用程序加载并读取包含VBA的文本文件,然后打开一个现有的excel文件,并通过将macros注入到excel甚至更好的方式运行macros,将工作簿中没有macros。

我不知道如何或从哪里开始,或者甚至可能。 我发现的壁橱是使用.net注入vbamacros代码到Excel中,但似乎没有帮助。 我正在寻找任何build议让我开始,我会在这里分享和更新我的进展。

这里是从VBA中的文件中添加一些VBA的方法(不应该太难以适应C#,但我对C#语法不够熟悉):

Function Insert_VBACode(ByRef oWB As Workbook) Dim oVBP As VBProject ' VB Project Object Dim oVBC As VBComponent ' VB Component Object On Error GoTo Err_VBP Set oVBP = oWB.VBProject Set oVBC = oVBP.VBComponents.Add(vbext_ct_StdModule) oVBC.CodeModule.AddFromFile "c:\VBADUD\Templates\MSample.bas" oWB.Application.Run "'" & oWB.name & "'!SayHello" oWB.Save End Function 

[来源] (看看那里如果你想添加任何error handling我已经删除了这里更多的可读性)。
您也可以打开工作簿,而不是将其作为函数的参数。

然后,您可以从C#中调用您导入的macros,这要归功于MSDN的这个演练 。