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

时间:2016-06-07 12:04:25

标签: c# excel vba macros interop

我有一个C#程序,它读取 AND 使用Microsoft Interop从同一个Excel文件写入数据(然后再处理数据,例如将其导出到另一个接口)。

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

代码段:

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文件。

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

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

如果可能的话,你有什么想法吗?如果是的话,我怎么能这样做?非常感谢你!

1 个答案:

答案 0 :(得分:0)

知道了!它并不复杂!

在VBA中,可以将工作簿的引用作为方法中的参数传递。所以我基本上做的是将工作簿的引用传递给我的TypeLibrary。在我的C#-Program中,我不再打开我的ExcelFile了,只是写了

m_ExcelWorkBook = parameter_WorkBook;

那就是它。

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