如何在SolidWorks宏的UserForm中加载宏同路径下的图片?
SolidWorks宏相对路径加载UserForm图片解决方案
直接使用./IMAGE.bmp或IMAGE.bmp这类相对路径加载图片失败,核心原因是SolidWorks宏运行时的当前工作目录并非宏文件所在目录,必须先获取宏文件的绝对路径,再拼接图片路径才能正常加载。
以下是两种可行的代码实现:
方法1:用VBA内置函数处理路径
Private Sub RENTRY_Click() Dim swApp As SldWorks.SldWorks Dim macroFullPath As String Dim macroDir As String Dim imgFullPath As String ' 获取SolidWorks应用对象 Set swApp = Application.SldWorks ' 获取当前宏文件的完整路径 macroFullPath = swApp.GetCurrentMacroPathFilename ' 提取宏文件所在目录 macroDir = Left(macroFullPath, InStrRev(macroFullPath, "\")) ' 拼接图片的完整路径 imgFullPath = macroDir & "IMAGE.bmp" ' 加载图片到Image控件 Image1.Picture = LoadPicture(imgFullPath, 552, 358, Default) End Sub
方法2:用FileSystemObject处理路径
Private Sub RENTRY_Click() Dim swApp As SldWorks.SldWorks Dim fso As Object Dim macroFullPath As String Dim macroDir As String Dim imgFullPath As String Set swApp = Application.SldWorks ' 创建文件系统对象实例 Set fso = CreateObject("Scripting.FileSystemObject") macroFullPath = swApp.GetCurrentMacroPathFilename ' 获取宏文件所在目录 macroDir = fso.GetParentFolderName(macroFullPath) & "\" imgFullPath = macroDir & "IMAGE.bmp" Image1.Picture = LoadPicture(imgFullPath, 552, 358, Default) End Sub
注意事项
- 确保图片文件
IMAGE.bmp与宏文件(.swp)存放在同一目录下 - 文件名及后缀需完全匹配(Windows系统大小写不敏感,但建议保持统一)
内容的提问来源于stack exchange,提问作者jeffp
相关产品推荐
相关产品推荐

