【问题标题】:Referencing VBA assembly in C#在 C# 中引用 VBA 程序集
【发布时间】:2010-09-05 05:10:29
【问题描述】:

如何在 Visual Studio 2010 的 C# 应用程序中引用 VBA 程序集?

我在“添加引用”对话框中找不到它。

这就是我需要它的原因:

错误 1 ​​类型“VBA.Collection”在未引用的程序集中定义。您必须添加对程序集“VBA,Version=6.0.0.0,Culture=neutral,PublicKeyToken=null”的引用。 ...

【问题讨论】:

    标签: c# vba assembly-references


    【解决方案1】:

    VBA 有很多版本,集成在各种应用程序中。按照版本号,我猜您需要使用 Project + Add Reference,Browse 选项卡,选择 c:\windows\system32\msvbvm60.dll。那是 VB6 的运行时支持模块。它确实在 VBA 命名空间中有一个 Collection 类。

    请尝试仔细检查该组件是否是用 VB6 编写的。部署可能很有趣。

    【讨论】:

      【解决方案2】:

      “程序集”是一组打包在通用 DLL 或 EXE 中的 .NET 函数。 VBA 不是 .NET,因此它不作为程序集存在。但是,您可以通过 COM 互操作层访问 VBA 组件。

      我认为您可能正在寻找的是这个

      http://support.microsoft.com/?kbid=323737

      【讨论】:

      • 我认为这就是答案。另一个可能会导致 'System.InvalidCastException' 。
      【解决方案3】:

      您真的不需要 C# 中的 VBA.Collection 类型,您可以使用更好的集合构造。 Generic.List、Generic.Dictionary 等,如果你看看那些你很可能会找到你需要的东西。

      这些是强类型的,因此您不会转换为其他类型。如果你需要 VBA 的“Variant”类型,你可以使用 HashTable。

      【讨论】:

      • 我同意。但问题是我正在使用的 COM 正在返回 VBA.Collection
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多