SolidWorks*Excel+VBA-替换图框
- 2026-11-12 10:42:02
SolidWorks*Excel+VBA-替换图框某天,公司突然换logo了,要求工程师图纸资料同步更新,看着密密麻麻好几百张图,头皮发麻。 上有政策,下有对策,一键批量走起!喝喝咖啡不香嘛。 老规矩 目前代码只适用单一图纸的工程图,多张图纸页的工程图需遍历工程图的所有sheet对象,感兴趣的朋友可自行拓展。 注意这次是图纸格式模板,不是工程图模板,俩不一样。 替换图框本质上是替换图纸格式。 


本案展示核心替换功能,其余诸多非主要细节就不在此处一一讨论了。
已关注
关注
重播 分享 赞
Sub RepSwDrw() '替换工程图图框Dim swApp As SldWorks.SldWorks, DrwPath As String, DrwTemplate As StringDim SwErr As Long, ShtPropVal, SwDrw As DrawingDocDim k As Integer, posn As Long, Results As StringOn Error Resume NextSet swApp = GetObject(, "SldWorks.Application")If swApp Is Nothing ThenMsgBox "请先打开SolidWorks!", vbExclamation, "不正经的机械仙人"Exit SubEnd IfDrwTemplate = ThisWorkbook.Sheets("SW0 参数设置").Range("D4").Value & "\" & _ThisWorkbook.Sheets("SW0 参数设置").Range("C4").ValueWith ThisWorkbook.ActiveSheetIf myselcondi ThenswApp.CloseAllDocuments (True)For k = 1 To SelnumberProcessBarUpdater k, Selnumber, "正在替换图框:", "共" & Selnumber & "个,第" & k & "个 ..."posn = Selarray(k)DrwPath = .Cells(posn, 2) & "\" & .Cells(posn, 3) & ".SLDDRW"If Dir(DrwPath) = "" ThenResults = "无工程图!"ElseSet SwDrw = swApp.OpenDoc2(DrwPath, swDocDRAWING, False, False, True, SwErr)If SwDrw Is Nothing ThenResults = "打开失败!"ElseShtPropVal = SwDrw.GetCurrentSheet.GetProperties2()If SwDrw.SetupSheet3(SwDrw.GetCurrentSheet.GetName, ShtPropVal(0), ShtPropVal(1), ShtPropVal(2), ShtPropVal(3), ShtPropVal(4), DrwTemplate, ShtPropVal(5), ShtPropVal(6)) = False ThenResults = "图框替换失败!"ElseSwDrw.Save: swApp.QuitDoc DrwPath: Set SwDrw = NothingResults = "图框已替换!"End IfswApp.QuitDoc DrwPath: Set SwDrw = Nothing: Erase ShtPropValEnd IfEnd If.Cells(posn, 1) = Results: Results = ""NextElseMsgBox "未选择正确行,程序结束!", vbExclamation, "不正经的机械仙人"End IfEnd WithErr.ClearSet swApp = NothingApplication.StatusBar = FalseEnd Sub



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