【问题标题】:Pass Excel-Workbook-Reference through VBA to C# Com Interop Type Library通过 VBA 将 Excel-Workbook-Reference 传递给 C# Com 互操作类型库
【发布时间】:2016-10-07 07:52:32
【问题描述】:

我有一个 C# 程序,它使用 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 文件中的引用传递给我的应用程序?!?

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

【问题讨论】:

    标签: c# excel vba macros interop


    【解决方案1】:

    知道了!而且并不复杂!

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

    m_ExcelWorkBook = parameter_WorkBook;
    

    就是这样。

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

    【讨论】:

    猜你喜欢
    • 2020-07-01
    • 2019-02-12
    • 2011-06-28
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多