使用c#对Excel工作表运行VBA宏

本文关键字:运行 VBA 工作 Excel 使用 | 更新日期: 2023-09-27 18:09:41

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

我不是试图将VBA转换为c#或从c#生成VBA。应用程序,VBA宏文本文件(VBA是单独提取并保存在一个文本文件中),Excel都是由不同的人单独编写/生成的。

应用程序加载并读取包含VBA的文本文件,并打开现有的excel文件并通过将宏注入excel或更好的方式对其运行宏,使工作簿中没有宏。

我不知道如何或从哪里开始,或者如果这是可能的。我在SO上发现的壁橱是使用。net将vba宏代码注入excel,但似乎没有帮助。我在寻找任何能让我开始的建议,我会在这里分享和更新我的进展。

使用c#对Excel工作表运行VBA宏

这是在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

[Source](如果你想添加错误处理,请查看这里,我已经删除了更多的可读性)。
您也可以打开工作簿,而不是将其作为函数的参数。

然后,你可以从c#中调用导入的宏,这要感谢MSDN的这个演练。