|
|

楼主 |
发表于 2017-6-24 19:59:18
|
显示全部楼层
来自: 中国广东深圳
本帖最后由 NC@jiang@nan 于 2017-6-24 21:39 编辑 0 f1 X9 J5 m4 ~2 ^3 ^
( Z% {! F0 A! C
丹大,我实在是不好意思了。看了两天您提供的这个宏文件,发现里面有几段代码在循环调用,按逻辑关系去推理,推理得头晕了,看不懂了。想改成在EXCEL里调用SW程序来打印文件,现在在试着做这个宏代码。刚开始做就碰到个问题,不知道在EXCEL的宏中是否可以检测SW软件是否已经启动,如果SW没启动的话就中止宏程序的运行。这样做的原因是:如果没有预先启动SW,这样在宏程序运行中用 Set swApp = CreateObject("SldWorks.Application") 代码来启动SW,在批量处理几个文件时,SW每处理完一个文件后就退出了,等处理下一个文件时又被Set swApp = CreateObject("SldWorks.Application")这个代码调出相当于又需要重新启动一次SW,这样循环启动比调用运行宏之前已经手动启动好的SW的速度要慢很多卡很多,特别电脑配置低点的时候处理文件的速度差距是天壤之别。我百度了一下”EXCEL VBA 怎么检测 调用的程序是否处于打开状态“主题,没找到有效的解决办法,能否请丹大指点迷津?谢谢6 ?. S8 z u/ ?% z. N% q# H$ Q
补充:
( Y; q+ x. J1 n) x! V, y丹大,又仔细的百度搜索了一会,修改代码后已经解决了问题了。
7 K4 u3 k- K4 ^- K/ [# f满足我要求的功能的代码如下:
$ P# G1 Y. @4 [" V# k0 @! x% C' W
On Error Resume Next
1 j9 ?8 U7 P2 H" U2 t4 S& m7 ] Set swApp = GetObject(, "SldWorks.Application")
" h7 g7 l5 O ^- L* s( y While swApp Is Nothing '如果调用SW程序失败(SW程序未启动)时,循环
: S9 p t, x0 u IResponse = MsgBox("请启动SolidWorks后重试或点击取消放弃打印!!", vbRetryCancel + vbInformation, "SolidWorks程序未启动!")! D/ u% i' Q; ~. ~& `+ e
If IResponse = vbCancel Then Exit Sub) _0 l( u; |. z" d b% A X6 s
Set swApp = GetObject(, "SldWorks.Application")- F: G$ n6 z7 G/ M0 B
Wend
2 s# F( v, m1 x8 W' r9 H# z On Error GoTo 0
+ V: [9 x/ h; z7 u8 |
, s7 o Q5 R( ~/ h |
|