EaBIM一直以来积极响应国家“十二五”推进建筑业信息化的号召,对建筑领域的信息技术开展深入技术交流和探讨!致力于打造“BIM-建筑师-生态技术”三位一体综合资源交流共享平台,希望为BIM与可持续设计理念及技术的普及做出微小的贡献!!!

EaBIM

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 7213|回复: 126
打印 上一主题 下一主题

关于以前写的VBA在新版本64位Inventor中无法使用的问题

[复制链接]

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12404

社区QQ达人

跳转到指定楼层
楼主
发表于 2014-1-14 10:20:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

问题:以前使用的VBA程序,使用了诸如ThisDocument、Me这样的对象,在新版的Inventor 64位里面,无法使用了。(现在需要使用ThisDocument.InventorDocument这样的表述方法),并且由于使用了Autoopen这样的自动执行的函数,导致打开一个Inventor部件的时候,弹出大量的错误对话框。能否将Inventor里面的VBA功能禁用,或者禁用AutoOpen函数?能否批量的将零件文件中的VBA程序代码删除或改写,这种操作是可以脱离Inventor进程进行,还是必须在Inventor中进行?


解决方法:

一、按住shift健就可以禁用Auto宏命令,Inventor API帮助文档里有说明:

"Autodesk Inventor runs automatic macros automatically whenever the associated events occur. If the user presses the Shift key when the event occurs, the automatic macro will not run. For example, if the user presses the Shift key while opening a document that contains an AutoOpen macro, the macro will not run."

二、要删除或者修改VBA程序,有两种方法:

  • 可以编写VBA项目(.ivb文件)或者一个简单的宏命令来删除文件中的VBA程序(等用户打开了文件后执行该命令)。例子如下:
    [vb] view plaincopy



    • 'You need to set a reference to the Microsoft Visual Basic for Applications   
    •   
    • 'Extensibility library, Tools > References   
    •   
    • Sub test()   
    •   
    • Dim l_mod As InventorVBAComponent ' VBComponent   
    •   
    • Dim l_project As InventorVBAProject   
    •   
    • For Each l_project In ThisApplication.VBAProjects   
    •   
    • If l_project.ProjectType = kDocumentVBAProject Then   
    •   
    • For Each l_mod In l_project.InventorVBAComponents   
    •   
    • 'ThisDocument module can't be deleted, so if Thisdocument, delete code of lines   
    •   
    • If l_mod.Name <> "ThisDocument" Then   
    •   
    • l_mod.VBComponent.Activate   
    •   
    • l_project.VBProject.VBComponents.Remove l_mod   
    •   
    • Else   
    •   
    • l_mod.VBComponent.CodeModule.DeleteLines 1, l_mod.VBComponent.CodeModule.CountOfLines   
    •   
    • End If   
    •   
    • Next   
    •   
    • End If   
    •   
    • Next   
    •   
    • End Sub   


    注:需要增加Microsoft Visual Basic for Applications Extensibility library (工具 -> 参考...)。 CodeModule还有一个ReplaceLine函数可以修改VBA代码。

    你也可以做个插件实现上述代码,再做个菜单方便界面调用。插件的一个好处是它可以有安装程序,所以不用配置/修改用户机器上的默认的.ivb文件(应用程序项目),也不用你手动的去加载你的VBA项目。

      以上两种方法都离不开Inventor进程。

三,这种方法可以脱离Inventor,请看我的另外一篇文章:免费的删除文档中的VBA程序的工具及源码

文章来源:http://blog.csdn.net/barbarahan


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言
推荐
发表于 2015-4-21 09:48:50 | 只看该作者
EaBIM的技术很高超,介绍的很详细,可以值得学习。

1514

主题

7465

帖子

1万

积分

admin

Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10Rank: 10

积分
12404

社区QQ达人

推荐
 楼主| 发表于 2014-3-28 10:18:45 | 只看该作者
看看        
工作时间:工作日的9:00-12:00/13:30-18:00,节假日不在线,请勿留言

14

主题

2892

帖子

2085

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
2085
推荐
发表于 2016-3-28 11:13:27 | 只看该作者
(^-^)V  支持!!~

66

主题

1001

帖子

2354

积分

BIM顾问

Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8Rank: 8

积分
2354

元老勋章特殊贡献勋章

11F
发表于 2014-2-21 14:47:30 | 只看该作者
路过!!!
不发表意见……
官方主页:www.eabim.net

8

主题

792

帖子

1349

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1349
12F
发表于 2014-2-22 20:15:55 | 只看该作者
顶......
楼下跟上.....

4

主题

864

帖子

1390

积分

BIM经理

Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6Rank: 6

积分
1390
16F
发表于 2014-3-7 12:02:57 | 只看该作者
(*^__^*) 嘻嘻……
*滑块验证:
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|EaBIM网 ( 苏ICP备2020058923号-1  苏公网安备32011502011255号

GMT+8, 2024-11-23 11:30

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表