是否可以编写一个WPF应用程序,该应用程序可以从单独的文本文件中加载和读取VBA宏,打开现有的C#工作簿,并对其处理VBA宏?
我不会尝试将VBA转换为C#或从C#生成VBA。应用程序、VBA宏文本文件( VBA被单独提取并保存在文本文件中)和Excel都是由不同的人单独编写/生成的。
应用程序加载并读取一个包含VBA的文本文件,然后打开一个现有的excel文件并对其运行宏,方法是将宏注入到excel中,或者更好的做法是保留工作簿中没有宏。
我不知道如何或从哪里开始,甚至不知道这是否可能。我在SO上找到的壁橱是Injecting vba macro code into excel using .net,但似乎没有帮助。我正在寻找任何建议,让我开始,我将在这里分享和更新我的进展。
发布于 2011-09-28 15:38:45
下面是在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] (如果你想添加任何错误处理,为了更好的可读性,我在这里去掉了)。
您还可以打开工作簿,而不是将其作为函数的参数。
然后,多亏了这个来自MSDN的walkthrough,你可以从C#调用你导入的宏。
https://stackoverflow.com/questions/7567751
复制相似问题