首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Excel 2003和2007引用到Autocad-VBA项目中

将Excel 2003和2007引用到Autocad-VBA项目中
EN

Stack Overflow用户
提问于 2011-03-18 12:28:20
回答 3查看 1.7K关注 0票数 2

我正在为AutoCAD编写一个VBA ()脚本。它使用Autocad作为图形引擎和Excel来显示结果。

问题是,一些用户正在使用Excel 2003,而另一些用户正在使用Excel 2007。

要从VBA中使用Excel2003,我必须将C:\Program Files\Microsoft office\Office12\excel.exe引用到该项目。但是要使用Excel2007,我必须参考...\Office14\excel.exe

对于不知道的人来说,引用是什么:必须在项目属性内永久执行,所以我无法编程地决定计算机中存在哪两个文件,并在运行时引用它们……或者我只是不知道怎么做?

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-18 12:38:50

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

使用后期绑定,您将不会有IntelliSense的方便。

不同版本的Excel具有不同的功能,在某些情况下甚至以不同的方式实现相同的功能。因此,一定要对这两个版本进行测试。在某些地方,对于不同版本,您可能需要有不同的代码。

票数 3
EN

Stack Overflow用户

发布于 2011-03-18 12:34:39

您需要延迟绑定,即不引用,将所有内容声明为"object“,并使用CreateObject实例化实例。

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

请注意,您应该对这两个版本进行彻底的测试,以防API或功能行为在不同版本之间发生变化。

票数 2
EN

Stack Overflow用户

发布于 2011-03-20 09:58:28

如果您正在为AutoCAD编写新代码,那么我会认真考虑使用.NET。Autodesk正在逐步淘汰他们对VBA的支持--它还没有自动包含在AutoCAD:http://withoutanet.typepad.com/without_a_net/2009/04/vba-in-autocad-2010.html的最后2个版本中(很快会有3个版本)。

当用户更新到较新的版本时,他们使用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更有价值。

.NET代码也受到官方发展援助的支持,所以使用他们的库将AutoCAD插件移植到独立应用程序中(有点)很简单。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5351978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档