Excel VBA如何通过代码启用工具/引用中的指定SOLIDWORKS类型库
动态加载SOLIDWORKS类型库的VBA实现方案
操作前置要求:需先进入Excel「文件-选项-信任中心-信任中心设置-宏设置」,勾选「信任对VBA工程对象模型的访问」,否则引用操作无权限执行。
以下是完整实现代码,可直接在Excel VBA模块中使用:
' 定义两个类型库的GUID,兼容路径查找失败场景 Const SW_TYPELIB_GUID As String = "{83A33D31-27C5-11CE-BFD4-444553540000}" Const SW_CONST_TYPELIB_GUID As String = "{4687F359-5509-43D1-A9EB-04046BC6FF67}" Const SW_TARGET_VERSION As String = "2016" ' 调用SOLIDWORKS功能前先运行此过程添加引用 Sub AddSWTypeLibReferences() Dim ref As Reference Dim swInstallDir As String Dim sldworksTlbPath As String, swConstTlbPath As String ' 检测是否已添加目标引用,避免重复添加报错 For Each ref In ThisWorkbook.VBProject.References If ref.GUID = SW_TYPELIB_GUID Or ref.GUID = SW_CONST_TYPELIB_GUID Then Exit Sub End If Next On Error GoTo NoSWInstalled ' 从系统注册表读取对应版本SOLIDWORKS的安装路径 swInstallDir = CreateObject("WScript.Shell").RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\SolidWorks\SOLIDWORKS " & SW_TARGET_VERSION & "\InstallDir") sldworksTlbPath = swInstallDir & "sldworks.tlb" swConstTlbPath = swInstallDir & "swconst.tlb" ' 按需添加两个目标类型库 ThisWorkbook.VBProject.References.AddFromFile sldworksTlbPath ThisWorkbook.VBProject.References.AddFromFile swConstTlbPath Exit Sub NoSWInstalled: MsgBox "未检测到SOLIDWORKS " & SW_TARGET_VERSION & " 安装环境,无法运行对应功能", vbInformation End Sub ' 程序运行结束后可调用此过程清理引用,避免残留 Sub RemoveSWTypeLibReferences() Dim ref As Reference For Each ref In ThisWorkbook.VBProject.References If ref.GUID = SW_TYPELIB_GUID Or ref.GUID = SW_CONST_TYPELIB_GUID Then ThisWorkbook.VBProject.References.Remove ref End If Next End Sub
注意事项
- 代码默认适配SOLIDWORKS 2016版本,如需适配其他版本,只需修改
SW_TARGET_VERSION常量的值即可 - 如果需要程序退出时自动清理引用,可在工作簿的
Workbook_BeforeClose事件中调用RemoveSWTypeLibReferences过程 - 内置错误捕获逻辑,未安装SOLIDWORKS的用户运行时仅会收到友好提示,不会导致整个Excel程序崩溃无法使用
内容的提问来源于stack exchange,提问作者Eduards
相关产品推荐
相关产品推荐

