【问题标题】:Reference both Excel 2003 and 2007 into Autocad-VBA project将 Excel 2003 和 2007 都引用到 Autocad-VBA 项目中
【发布时间】:2011-03-20 17:58:28
【问题描述】:

我正在为 AutoCAD 编写 VBA(Visual Basic for Applications)脚本。它使用 Autocad 作为图形引擎,使用 Excel 来显示结果......

问题是,一些用户使用 Excel 2003,而其他用户使用 Excel 2007。

要使用 VBA 中的 Excel 2003,我必须将 C:\Program Files\Microsoft office\Office12\excel.exe 引用到项目中。但是要使用 Excel 2007,我必须引用 ...\Office14\excel.exe

对于不知道什么是引用的人:它必须在项目属性中永久完成,所以我无法以编程方式确定这两个文件中的哪一个确实存在于计算机中并在运行时引用它们.... 或者我只是不知道,如何?

我什至不能同时引用这两个文件,因为它们具有相同的文件名。

【问题讨论】:

    标签: excel vba reference libraries autocad


    【解决方案1】:

    您需要使用后期绑定 (IDispatch)。通过调用 VBA 的 CreateObject 方法创建您的 Excel 应用程序对象。这将使用安装的任何版本。

    使用后期绑定,您将无法享受 IntelliSense 带来的便利。

    不同版本的 Excel 具有不同的功能,在某些情况下甚至以不同的方式实现相同的功能。因此,请务必针对这两个版本进行测试。在某些地方,您可能必须为不同的版本使用不同的代码。

    【讨论】:

      【解决方案2】:

      你需要后期绑定,即不引用,将所有内容声明为“对象”并使用 CreateObject 实例化实例。

      这并不难,因为您可以使用(早期绑定)中的引用进行编码,然后只需更改变量声明并删除引用。由于版本不同的问题,在针对excel进行编码时很常见。

      请注意,如果版本之间的 API 或功能行为发生变化,您应该对两者进行彻底测试。

      【讨论】:

        【解决方案3】:

        如果您正在为 AutoCAD 编写新代码,我会认真考虑使用 .NET。 Autodesk 正在逐步停止对 VBA 的支持 - 它并未自动包含在 AutoCAD 的最后 2 个(即将成为 3 个)版本中:http://withoutanet.typepad.com/without_a_net/2009/04/vba-in-autocad-2010.html

        随着用户更新到较新的版本,他们在使用 VBA 插件时会遇到更大的阻力。 LISP 和 ARX 在未来几年内不会有任何进展,因为很多 AutoCAD 命令都是用这些语言编写的。

        即使您要维护现有代码,我认为您也应该认真努力迁移到 AutoCAD 将在不久的将来支持的技术。我有很多我在 VBA 中编写的工具,我已经停止维护(阅读 - 放弃)并且现在正在用 .NET 重写。从 VBA 到 VB 的飞跃不是一个量子飞跃。就个人而言,我现在更喜欢 C#,但这完全是个人选择。这些语言在功能上是等效的。在上面的链接和http://through-the-interface.typepad.com/through_the_interface/2010/02/updated-devtv-autocad-vba-to-vbnet-migration-basics.html 上有一些迁移指南的链接。作为奖励,这些技能在未来和现在在 AutoCAD 开发之外比 VBA 更有价值。

        ODA 也支持 .NET 代码,因此使用其库将 AutoCAD 附加组件移植到独立应用程序(有点)简单。

        此外,这可以解决您的问题 - 可以在 Visual Studio .NET 项目中以编程方式管理引用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-04
          相关资源
          最近更新 更多