2

我正在寻找一种将 VB.NET 加载项中的代码写入 VBA 项目的方法

所以说将“Msgbox(“Hello world!”)”作为.NET的Excel项目的一部分写入.bas模块,因此从.NET编写的代码将是一些预先编写的VBA,以字符串形式存储并注入VBA项目

我有遗留代码,用于在 VBA 中执行此类操作,使用 VBE 属性为 VBA IDE 创建命令栏并将代码写入其他模块或创建新模块,但我希望能够做到就像我在 VB.NET 的主题中所说的那样[最好来自创建的要在 Excel 功能区上显示的加载项],或者来自可以最小化到托盘的独立 winform 应用程序。

我想做的两件事是:

  1. 为了监控 VBA 代码性能,我提到的遗留代码基本上是在项目中每个过程的开始和结束时插入对另一个子程序的调用,并写入 .csv,以便您知道每个子程序和函数运行多长时间
  2. 要将 VBA 项目分解为组件以便可以将它们添加到 TFS,基本上循环遍历 VBA 项目的所有组件并将它们导出到文件夹,以便可以将它们添加到 TFS 以便更好地跟踪更改的源代码

有人可以指出我从 vb.net 向 VBA 模块编写代码的示例[如果有的话],或者就如何实现这一点提供指导。

我正在使用 .net framework 4.5 和 Visual Studio 2012 与 vb,但我对 c# 示例也很好

非常感谢。

4

1 回答 1

2

我假设你已经想通了,但以防万一:

VBE 对象树通过自动化公开 - 只需通过 CreateObject 调用获取您正在处理的任何 Office 文件的应用程序对象,然后执行您在 VBA 中所做的相同操作(显然,从 VB6 到 .net 进行适当的更改)。

exl = CreateObject("Excel.Sheet")
exl.Application.Workbooks.Open("whatever.xlsx")
'exl.Application.VBE.ActiveVBProject etc etc
于 2014-04-04T19:07:46.720 回答