迟绑定模式下Excel VBA删除Solidworks工程图Detail view异常咨询
故障原因及修复方案
核心问题定位
你遇到的异常确实和Excel VBA环境下的晚绑定规则有关,主要是两个底层差异:
- Excel VBA晚绑定对COM接口的空参数传递规则和Solidworks原生API环境不一致,你代码中
SelectByID2的第8个参数传Nothing在晚绑定场景下无法被Solidworks正确识别,导致选择始终失败,自然删不掉目标对象 - 工程图环境下Detail Circle默认属于Detail视图的内部草图,未激活对应草图上下文时无法直接选中,你直接按ID选圆弧当然无法命中
修复建议
- 替换
SelectByID2的空参数写法:将第8个参数的Nothing替换为Empty,适配Excel VBA晚绑定的参数传递规则 - 调整删除顺序:不要分开删视图和圆,直接选中Detail视图特征后删除,会同步删除关联的Detail Circle,不需要单独处理圆弧
- 增加选择成功校验,避免未选中对象时误删其他内容
- 如果需要单独删除Detail Circle,要先激活对应草图上下文再执行选择操作
修正后参考代码
Dim SwApp On Error Resume Next Set SwApp = GetObject(, "SldWorks.Application") ' 启动未运行的Solidworks If Err.Number <> 0 Then Set SwApp = CreateObject("SldWorks.Application") End If SwApp.Visible = True Dim InitialDrawing2 As Object Set InitialDrawing2 = SwApp.Opendoc(FormatSketchTemplateFolder & "FormatSketch+Tray.SLDDRW", 3) Dim Status As Boolean ' 替换空参数为Empty适配晚绑定 Status = InitialDrawing2.Extension.SelectByID2("Detail Circle2", "DETAILCIRCLE", 0, 0, 0, False, 0, Empty, 0) If Status Then InitialDrawing2.EditDelete End If ' 确有需要删剩余圆弧时,补充激活对应草图的逻辑后再执行选择
内容的提问来源于stack exchange,提问作者Guntis
相关产品推荐
相关产品推荐

