-1

我正在编写一个需要与 CATIA “即时”绘图合作的 excel 宏。这意味着它需要将一些东西从excel表中放置在绘图上,并根据用户的需求将绘图中的东西放到excel表中。听起来很简单,但是.. 在我的特殊情况下,CATIA 没有安装在本地,而是安装在公司的服务器上。为了连接用户需要通过“CNEXT.exe /regserver”命令注册它,首先在网盘上寻找CNEXT.exe的路径。所以他需要启动如下命令:“ j:\appl...\CNEXT.exe /regsever ”。在我的宏中,我需要通过以下方式引用 *.tlb 文件来建立与 CATIA 对象的连接:

参考截图

参考截图

这仍然很容易,现在棘手的部分来了:只要我在工作并且网络磁盘可用,一切都可以正常工作。一旦我尝试在外面打开这个 excel 文件,它就会挂起。我发现我定义的引用在 *.tlb 文件上指示,这些文件存储在 CATIA 所在的同一位置。:( 我正在开发的这个 excel 文件必须与我们的供应商共享,他们需要手动填写他们需要完成的工作表,以及我公司中无法访问 CATIA 的其他人以便能够查看它。一般的想法是宏只能由使用CATIA的人运行,并且其他人应该可以手动修改工作表和审查。在目前无法访问“j:...”网络驱动器的情况下,任何人都无法打开excel 文件,更不用说我正在编写的启动宏。

我的问题是:是否可以强制 excel 在 lanuch 不检查引用,而只能通过初始化程序之一中的某个步骤来执行?我写了一些代码来检查 CATIA 的可用性,Excel 可以在其中检查这些引用。另一个想法是以某种方式嵌入 *.tlb 文件或它们在我的 excel 文件中的内容,以供任何人永久使用。

我试图在代码中添加对 *.tlb 文件的引用以指示相同的 *.tlb 文件,但已复制到我计算机上的某个本地目录(以便能够在公司外部编写代码),但我得到了一个错误信息:

错误消息 - 未定义用户定义类型

错误消息 - 未定义用户定义类型

小更新 - 我只是对早期和晚期绑定感到不满。我进行了测试并编写了一个代码,将 CATIA 对象声明为 Object,而不是 INFITF.Application。现在我可以在不参考任何 *.tlb 文件的情况下进行编码。现在问题消失了,但智能感知也消失了 :( - 我无法想象没有它编写代码。所以我想到了一个想法,我可以使用在 *.tlb 文件上正确指示的引用进行编码,然后只需在将宏发布到整体使用之前,我可以将声明从“CATIA 特定”交换为对象类型,但这需要编写一个宏来修改一个宏来更改整个代码中所有实例的这些声明:(:(:(。 。 请帮帮我..

4

1 回答 1

0

我建议您维护两个 excel 文件“主文件”,其中包含与 catia 通信的宏和用于存储数据的“数据文件”。“数据文件”将没有任何与 catia 通信的宏。

然后您可以使用表单/文件浏览主文件中的VBA代码来浏览并选择“数据文件”,然后您可以轻松读取数据文件并执行您的操作。

我是为客户做的,相信我,这比

编写一个宏来修改一个宏来更改整个代码中所有实例的这些声明

于 2015-11-26T16:13:49.723 回答