今天是:
您的位置:首页 >> 最新文章

如何在AutoLISP调用完一个VBA宏后卸载包含它的VBA工程0自动过滤器

时间:2023-05-19 11:48:00 来源:翔鸿五金网 浏览量:1

如何在AutoLISP调用完一个VBA宏后,卸载包含它的VBA工程?

如何在AutoLISP调用完一个VBA宏后,卸载包含它的VBA工程? 2011年12月10日 来源: 问: 如何在AutoLISP调用完一个VBA宏后,卸载包含它的VBA工程?我想首先加载这个工程,调用一个宏,然后卸载它。下面是我使用的代码,但是VBAUNLOAD在Test宏结束之前被发送到命令行。 (command "-VBARUN" "Test") (command "vbaunload") 答:主要的问题是你的宏当中有要求用户输入的语句,这时LISP试图执行下一条命令,即VBAUNLOAD。我们需要等待LISP语句执行完毕,或者让LISP在调用VBARUN命令后什么也不做,而让VBA卸载它自己。下面是这两种方法: 1) 在LISP中等待。 (defun c:RunMacro( / oldFileDia oldCmdEcho) (setq oldFileDia (getvar "FILEDIA") oldCmdEcho (getvar "CMDECHO") ) (setvar "FILEDIA" 0) (setvar "CMDECHO" 0) (command "_VBALOAD" "c:\\test.dvb") (command "_-VBARUN" "Test") (while (= "-VBARUN" (getvar "CMDNAMES")) (command pause) ) (command "_VBAUNLOAD") (setvar "FILEDIA" oldFileDia) (setvar "CMDECHO" oldCmdEcho) (princ) ) 2) VBA中自动卸载。 你可以使VBA代码强制卸载它自己。在你的宏的最后(例如:UserForm_Terminate()),使用下列代码可以达到此目的: AppActivate ThisDrawing.Application.Caption SendKeys "_VBAUNLOAD" + Chr$(13) 以上的代码在AutoCAD R14.01中工作良好,但是AutoCAD 2000允许加载多个工程。相应地,VBAUNLOAD增加了一个额外参数。有两个新的函数可以加载和运行VBA 代码:(vl-vbaload)和(vl-vbarun)。你可以通过在宏名中指定工程名字把这两种操作联合在一起。 (defun c:RunMacro2000( / oldFileDia oldCmdEcho) (setq oldFileDia (getvar "FILEDIA") oldCmdEcho (getvar "CMDECHO") ) (setvar "FILEDIA" 0) (setvar "CMDECHO" 0) (vl-vbarun "c:\\test.dvb!Test") (while (= "-VBARUN" (getvar "CMDNAMES")) (command pause) ) (command "VBAUNLOAD" "c:\\test.dvb") (setvar "FILEDIA" oldFileDia) (setvar "CMDECHO" oldCmdEcho) (princ) ) 第二种方法也需要做一些小的改动。我们可以通过自动接口向AutoCAD发送命令,并且这比SendKeys更安全: ThisDrawing.SendCommand "_VBAUNLOAD C:\TEST.DVB" + Chr$(13) 如果我们卸载另一个工程,我们可以使用自动接口 (ThisDrawing.Application.UnloadDVB "test.dvb" )。但是在这种情况下我们需要使用SendKeys或SendCommand来卸载其本身。

603383顶点软件股票

虚拟货币的常见英文缩写

大连同信房地产土地评估咨询事务所有限公司

相关阅读
友情链接