首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用C#对Excel工作表运行VBA宏

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

Stack Overflow用户
提问于 2011-09-27 18:37:38
回答 1查看 2.3K关注 0票数 2

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

我不会尝试将VBA转换为C#或从C#生成VBA。应用程序、VBA宏文本文件( VBA被单独提取并保存在文本文件中)和Excel都是由不同的人单独编写/生成的。

应用程序加载并读取一个包含VBA的文本文件,然后打开一个现有的excel文件并对其运行宏,方法是将宏注入到excel中,或者更好的做法是保留工作簿中没有宏。

我不知道如何或从哪里开始,甚至不知道这是否可能。我在SO上找到的壁橱是Injecting vba macro code into excel using .net,但似乎没有帮助。我正在寻找任何建议,让我开始,我将在这里分享和更新我的进展。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-28 15:38:45

下面是在VBA中从文件中添加一些VBA的方法(让它适应C#应该不是很难,但我对C#语法不够熟悉):

代码语言:javascript
运行
复制
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#调用你导入的宏。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7567751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档