You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:为SolidWorks存PDF宏添加只读文件检查功能

解决SolidWorks宏因只读PDF文件崩溃的问题

原宏功能为将当前SolidWorks工程图保存为同路径、同名的PDF文件,但存在缺陷:当目标路径下已存在只读状态的PDF文件时,宏会陷入无响应,最终导致SolidWorks崩溃,用户被迫强制退出并丢失未保存修改。

以下是添加了只读文件检查功能的修改版宏代码:

Dim swApp As SldWorks.SldWorks
Dim Part As SldWorks.ModelDoc2

Sub main()

    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc
    
    ' 检查是否有活动文档
    If Part Is Nothing Then
        MsgBox "未找到活动文档!", vbExclamation
        Exit Sub
    End If
    
    Dim FilePath As String
    Dim PathSize As Long
    Dim PathNoExtension As String
    Dim NewFilePath As String
    
    FilePath = Part.GetPathName
    ' 检查文档是否已保存(无路径无法生成PDF目标路径)
    If FilePath = "" Then
        MsgBox "请先保存当前文档!", vbExclamation
        Exit Sub
    End If
    
    PathSize = Strings.Len(FilePath)
    PathNoExtension = Strings.Left(FilePath, PathSize - 6)
    NewFilePath = PathNoExtension & "pdf"
    
    ' 检查目标PDF是否存在且为只读
    If Dir(NewFilePath) <> "" Then
        If (GetAttr(NewFilePath) And vbReadOnly) = vbReadOnly Then
            MsgBox "File is read only", vbCritical
            Exit Sub ' 终止宏运行
        End If
    End If
    
    On Error Resume Next
    Part.SaveAs2 NewFilePath, 0, True, False
    ' 可选:提示保存失败原因
    If Err.Number <> 0 Then
        MsgBox "PDF保存失败: " & Err.Description, vbCritical
    End If
    
End Sub

关键修改说明:

  • 添加活动文档校验:避免无打开文档时宏报错
  • 添加文档保存状态校验:未保存的文档无路径,无法生成PDF目标路径
  • 新增只读文件检测逻辑:
    1. 用Dir(NewFilePath)判断目标PDF是否存在
    2. 用GetAttr(NewFilePath) And vbReadOnly判断文件是否为只读
    3. 检测到只读时弹窗提示,并通过Exit Sub终止宏
  • 保留错误捕获并新增保存失败提示,方便排查其他异常

内容的提问来源于stack exchange,提问作者Adrian Crisci

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:02:16