如何在CATIA V5宏循环中跳过出错迭代并使用上一有效文件保存
解决方案
核心逻辑是新增变量记录最近一次导出成功的有效CATPart文件路径,每次迭代先捕获参数更新、导出环节的错误,一旦触发错误直接将上一次的有效文件复制到本次的目标路径即可。
调整后代码示例
Dim lastValidFile As String ' 可选:如果第一次迭代就报错需要默认基准文件,可以在这里先给lastValidFile赋初始路径 On Error Resume Next For i = 1 To 10 Err.Clear ' 每次迭代前清空上一次的错误状态 strParam2.Value = Val(i) * 1 part1.Update folderpath3 = folderpath2 & "\" & "file" & i MkDir folderpath3 name = folderpath3 & "\" & "file" & i & ".CATPart" ' 主动补后缀避免版本兼容异常 partDocument1.ExportData name, "CATPart" If Err.Number = 0 Then ' 本次迭代无错误,更新最后有效文件路径 lastValidFile = name Else ' 触发错误,直接复制上一次有效文件到本次路径 If lastValidFile <> "" Then FileCopy lastValidFile, name Else ' 首次迭代就报错的兜底处理,可按需修改 MsgBox "第" & i & "次迭代报错,无可用的历史有效文件" End If Err.Clear ' 清空错误状态,不影响下一次迭代 End If Next ' 循环结束后关闭错误捕获 On Error GoTo 0
注意事项
- 原有代码的错误捕获位置在
part1.Update之后,会漏掉参数更新环节的报错,调整后错误捕获覆盖所有可能触发异常的环节 - 调用
FileCopy需要确保上一次的有效文件没有被移动或删除,磁盘空间充足的前提下建议保留所有历史有效文件 - 如果需要对报错的迭代做追溯,可在错误分支新增文本日志写入逻辑
内容的提问来源于stack exchange,提问作者Matthieu
相关产品推荐
相关产品推荐

