gpt4 book ai didi

c# - 如何通过 C# 代码将文本文件中的 vba 宏加载到 excel 文件中?

转载 作者:太空狗 更新时间:2023-10-30 01:03:35 26 4
gpt4 key购买 nike

我的 C# 代码必须创建一个包含两个工作表的 Excel 文件,并在其中输出一些数据。除了数据列之外,工作表 1 还必须启用 VBA 宏,这将允许用户在单击特定单元格时使用提供的数据执行一些数学计算。此 VBA 宏存储在一个文本文件中,例如 C:\VBA_MACROS\VBA1.txt。

现在我可以手动完成,即

  1. C# 代码创建一个 Excel 文件并用数据填充它。
  2. 我右键单击 Sheet1 并选择“查看代码”选项。
  3. 我单击 Microsoft Visual Basic for Applications 菜单中的“插入”按钮并加载文件 C:\VBA_MACROS\VBA1.txt
  4. 我关闭 VBA 代码窗口。

问题:第 2 步到第 4 步是否可以像第 1 步一样由 C# 代码自动执行?在这种情况下,用户不必手动执行它们,这对她来说是一种更舒适的方式。

准确地说,应用程序是这样创建的:

Excel.Application application = new Excel.Application();
Excel.Workbook workbook = application.Workbooks.Add();
Excel.Worksheet worksheet = workbook.Sheets[1];
Excel.Worksheet worksheet2 = workbook.Sheets[2];

// output data to the worksheets
DataTable2Worksheet(tableMain, worksheet, verSize);
DataTable2Worksheet(tableExtra, worksheet2, 0);

// output workbook to the file
string fileDir = @"D:\MyTests\ExcelTests\";
Output2File(fileDir, workbook);

DataTable2WorksheetOutput2File 函数非常简单,但是如何将文本文件的内容附加到 worksheet = workbook.Sheets[1] 通过使用 AddFromFile 方法?

最佳答案

您需要引用 Microsoft.Vbe.Interop;

然后您需要获取要插入的模块的句柄。然后你可以只使用 CodeModule.AddFromFile method将文本文件中的代码插入到模块中。

VBE.VBProjects("NameOfProject").VBComponents.Item("NameOfWorksheet").CodeModule.AddFromFile("C:\Path\to\file.txt");

新创建的项目的默认名称是 "VBAProject",您将工作表的组件名称作为工作表的名称。

因此,对于您的特定情况,您可以在代码段的末尾添加这行代码,以将 VBA 插入到 Sheet1 中。

application.VBE.VBProjects("VBAProject").VBComponents.Item("Sheet1").CodeModule.AddFromFile("C:\VBA_MACROS\VBA1.txt");

我刚刚了解到另一种选择是使用 VBProject property of the Workbook ,这使得调用更清晰一些。

workbook.VBProject.VBComponents.Item("Sheet1").CodeModule.AddFromFile("C:\VBA_MACROS\VBA1.txt");

关于c# - 如何通过 C# 代码将文本文件中的 vba 宏加载到 excel 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27804620/

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