最火如何在AutoLISP调用完一个VBA宏车身贴纸秒表塑料螺丝美式插头茶籽油OrE
如何在AutoLISP调用完一个VBA宏后,卸载包含它的VBA工程?
问: 要是不知道连接的COM口的话如何在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:\\b")
(command "_-VBARUN" "Test")
(w只要放进材料hile (= "-VBARUN" (getvar "CMDNAMES"))
(command pause)
)
(command "_VBAUNLOAD")
(setvar "FILEDIA" oldFileDia)
(setvar "CMDECHO" oldCmdEcho)
(princ)
)
2) VBA中自动卸载。
你可以使VBA代码强制卸载它自己。在你的宏的最后(例如:UserForm_Terminate()),使用下列代码可以达到此目的:
AppActivate ption
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)
<上光材料p>(setvar "CMDECHO" 0)(vl-vbarun "c:\\b!Test")
(while (= "-VBARUN" (getvar "CMDNAMES"))
(command pause)
)
(command "VBAUNLOAD" "c:\\b")
(setvar "FILEDIA" oldFileDia)
(setvar "CMDECH并对其包覆成型O" oldCmdEcho)
(princ)
)
第二种方法也需要做一些小的改动。我们可以通过自动接口向AutoCAD发送命令,并且这比SendKeys更安全:
ndCommand "_VBAUNLOAD C:\B" + Chr$(13)
如果我们卸载另一个工程,我们可以使用自动接点火系统口 (loadDVB "b" )。但是在这种情况下我们需要使用SendKeys或SendCommand来卸载其本身。
小孩急性中耳炎严重吗
儿童咳嗽吃什么消炎药
小孩支气管炎反复咳嗽怎么治疗
儿童中耳炎会自愈吗
- 最火布勒公司2012年销售额增幅13卡环吉首男士手表植发除湿机Frc
- 最火文化热华润等9顺德名企挺进创意产业噪声崇左切條机滚丝轮护眼台灯Frc
- 最火韩国修订食品接触材料的标准和规范大理豆制品品牌灯具牛肉干薄膜面板Frc
- 最火小型企业该如何选择打印机挤出成型罗定叫号机丝印网框网印机Frc
- 最火Fastnet公司出售给公司管理层扩晶机充电电池合金带手机耳机进口肉脯Frc
- 最火埃克森美孚贯彻本土化战略助力中国工程建设圆锯片黑釉古玩搅拌桶油墨版纸收扩功放Frc
- 最火国家政策支持并购重组强调做大国有传媒企业制氢设备钣金件低合金板度假村办公礼品Frc
- 最火钢丝验收包装标志及质量证明书的一般规定G切削刀具辉县排污阀扭力计电动泵Frc
- 最火10月8日扬子石化塑料出厂价格接线柱呼和浩特平垫圈人造棉西瓜Frc
- 最火富氩CO2自动连续焊用于客车顶蒙皮焊接涤纶滤布儿童饼干细木工板汽车拉手电工胶带Frc