通过 VBA 将 Excel-Workbook-Reference 传递给 C# Com Interop 类型库

Pass Excel-Workbook-Reference through VBA to C# Com Interop Type Library

我有一个 C# 程序,它读取 AND 使用 Microsoft Interop 从相同的 Excel 文件写入数据(然后对数据进行处理,例如导出它到另一个界面)。

所以基本上我的项目中有一个 class 'ExcelFileReader',它打开 Excel 文件,读取和写入数据,然后关闭文件。

代码片段:

m_ExcelApp = new Excel.Application();
m_ExcelWorkBook = m_ExcelApp.Workbooks.Open(m_ExcelPath, 0, false, 5, "", "", true, Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);

如您所见,.open 方法的第三个参数是 false,这意味着 'readonly=false'(因为正如我已经提到的,我需要将数据写入文件)。因此,当我 运行 我的程序时,必须关闭 Excel-File。

我现在想做的是编写一个 VBA 宏(包含在我的 Excel-File 中),它启动我的程序(当然也读取和写入数据到我的 now打开 Excel 文件)。我知道如何在 Excel 中包含 *.tlb 文件。

但是(我认为)我需要做的是将引用从打开的 Excel-File 传递到我的应用程序?!?

如果可行,您有什么想法吗?如果可行,我该怎么做?非常感谢!

知道了!而且并不复杂!

在 VBA 中,可以将工作簿的引用作为方法中的参数传递。所以我基本上所做的是将工作簿的引用传递到我的 TypeLibrary。在我的 C# 程序中,我不再打开我的 Excel 文件,而是简单地写了

m_ExcelWorkBook = parameter_WorkBook;

就是这样。

是的。可以将 Excel-Workbook-Reference 传递给类型库并使用它!