SolidWorks*Excel+VBA-中期优化
- 2026-10-29 22:48:10
SolidWorks*Excel+VBA-中期优化因为涉及Excel以及SW应用程序的交互,大部分sub过程都需要获取SW对象,在以往的例子中,可以看到大量的这句代码 但是当SW主程序未打开,GetObject是获取不到对象的,会报错,于是,你又可以看到大量的强制忽略错误的代码 在VBA中,这句代码是强制忽略所有错误,继续按步执行下一句语句。这就会导致很多其他错误一并被忽略,不方便调试,也容易埋雷。 所以,预先把肯定会报错的程序段隔离出去,降低风险。 把swapp设为全局变量,所有程序都可引用,然后在按钮回调机制中判断当前程序是否需要getobject,把错误前置隔离。 但是如何判断当前程序段是否需要获取sw对象?这个就得在定制xml中,id名称加以区分,我是通过判断id名称中是否含有swapp字符串判断。 
看到这里,你已经可以隔离报错了,把它牢牢捏在手里。 
Set swApp = GetObject(, "SldWorks.Application")On Error Resume NextPublic swApp As SldWorks.SldWorksSub myftn(Control As IRibbonControl) '回调Dim PrgID As String, PrgArr As VariantOn Error GoTo AppNoOpenPrgID = Control.ID: PrgArr = Split(PrgID, "_")If InStr(PrgID, "SWapp") <> 0 ThenSet swApp = GetObject(, "SldWorks.Application")AppNoOpen: If swApp Is Nothing ThenMsgBox "请先打开SolidWorks!", vbExclamation, "不正经的机械仙人"Err.ClearExit SubEnd IfEnd IfOn Error GoTo PrgEndIf UBound(PrgArr) > 1 ThenApplication.Run PrgArr(1), PrgArr(2)ElseApplication.Run PrgArr(1)End IfIf Not swApp Is Nothing Then Set swApp = NothingExit SubPrgEnd: MsgBox "遇到错误,已中止!", vbExclamation, "不正经的机械仙人"Err.ClearEnd Sub


本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。