是否可以编写一个 WPF C# 应用程序,该应用程序可以从单独的文本文件加载和读取 VBA 宏、打开现有的 Excel 工作簿并对其处理 VBA 宏?
我并不是试图将 VBA 转换为 C# 或从 C# 生成 VBA。应用程序、VBA 宏文本文件(VBA 被提取并单独保存在文本文件中)和 Excel 都是由不同的人单独编写/生成的。
应用程序加载并读取包含 VBA 的文本文件,然后打开现有的 Excel 文件并通过将宏注入(inject)到 Excel 来对其运行宏,或者更好的是,让工作簿中不包含宏。
我不知道如何或从哪里开始,或者是否可能。我在SO上找到的衣柜是Injecting vba macro code into excel using .net但似乎没有帮助。我正在寻找任何帮助我开始的建议,我将在这里分享和更新我的进展。
最佳答案
以下是在 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] (如果您想添加我在此处删除的任何错误处理以提高可读性,请查看那里)。
您还可以打开工作簿,而不是将其作为函数的参数。
然后,您可以通过此 walkthrough 从 C# 调用导入的宏。来自 MSDN。
关于c# - 使用 C# 对 Excel 工作表运行 VBA 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7567751/