跳到主要内容

使用SOLIDWORKS API在文档保存时自动运行VBA宏

这个VBA宏使用SOLIDWORKS API处理活动文档(零件、装配或绘图)的保存事件(包括全部保存和另存为),并运行自定义代码。

宏在后台运行,需要在每个会话中运行一次以开始监视。

文件保存命令

配置

  • 创建新的宏
  • 将代码从宏模块复制到默认模块中
  • 将需要在每次保存时执行的代码添加到OnSaveDocument函数中
Sub OnSaveDocument(Optional dummy As Variant = Empty)
'TODO: 在此处放置在文档保存时运行的代码
MsgBox "已保存"
End Sub
  • 为了简化这个函数,您可以调用另一个宏,而不需要显式地复制代码。请参考运行一组宏示例。

  • 添加新的类模块,并将其命名为SaveEventsHandler。将代码从SaveEventsHandler类模块复制到该模块中。

  • 可以自动在每个SOLIDWORKS会话中运行此宏可能会很有用。请参考在SOLIDWORKS启动时自动运行宏链接获取更多信息。

宏模块

入口点,开始事件监视并处理一次保存事件到达时需要运行的代码。

Dim swFileSaveHandler As SaveEventsHandler

Sub main()

Set swFileSaveHandler = New SaveEventsHandler

While True
DoEvents
Wend

End Sub

Sub OnSaveDocument(Optional dummy As Variant = Empty)
'TODO: 在此处放置在文档保存时运行的代码
MsgBox "已保存"
End Sub

SaveEventsHandler类模块

处理SOLIDWORKS API保存通知的类。

Dim WithEvents swApp As SldWorks.SldWorks

Private Sub Class_Initialize()
Set swApp = Application.SldWorks
End Sub

Private Function swApp_CommandCloseNotify(ByVal Command As Long, ByVal reason As Long) As Long

Const swCommands_Save As Long = 2
Const swCommands_SaveAll As Long = 19
Const swCommands_SaveAs As Long = 620

If Command = swCommands_Save Or Command = swCommands_SaveAll Or Command = swCommands_SaveAs Then
OnSaveDocument
End If

End Function