gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:35:05 25 4
gpt4 key购买 nike

是否可以编写一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com