SOLIDWORKS
SOLIDWORKS 巨集無法執行或跳出錯誤?依症狀與錯誤訊息排查
SOLIDWORKS 巨集平常按一下就能用,某天按鈕不見、跳出錯誤視窗,或按了完全沒反應? 這篇依症狀整理原因與處理方式。介面名稱以 SOLIDWORKS 2025 繁體中文說明為準; VBA 編輯器裡的指令,SOLIDWORKS API 說明只有英文版,這裡照英文寫。
依官方說明,Visual Basic for Applications(VBA)是 SOLIDWORKS 錄製、執行、編輯巨集的引擎, 錄製的巨集存成 .swp。下面表格裡的錯誤都是 VBA 跳出的訊息,所以會一併對照 Microsoft 的 VBA 說明。
本文目錄(8 節)
先記下三件事,再開始排查
不管跳出哪種錯誤,先記下這三件事,之後不管自己查或找人幫忙都用得到:
- 錯誤視窗的完整文字與代碼(例如錯誤 91 的「91」)
- 執行當下開啟的是哪一個檔案、檔案類型是零件、組合件還是工程圖
- 是每次都會出錯,還是只有特定檔案、特定電腦才會出錯
巨集工具列或巨集按鈕不見了
先確認是不是本來就沒有顯示:因為 CommandManager 已經包含目前文件最常用的工具,SOLIDWORKS 預設將工具列關閉。 「巨集」工具列上有執行巨集、新巨集、停止巨集、編輯巨集、錄製/暫停巨集,以及新巨集按鈕。
- 顯示「巨集」工具列:開啟零件、組合件或工程圖,在視窗邊框上按右鍵 > 工具列,勾選「巨集」; 或按工具 > 自訂,在「工具列」標籤勾選。
- 所有工具列和 CommandManager 一起不見:按檢視 > 使用者介面 > 工具列,或按 F10。
- 零件裡有,換到工程圖又不見:工具列的顯示是依文件類型(零件、組合件、工程圖)分別設定, 在工程圖開啟時再設定一次。
- 沒開任何文件時:關閉文件後無法使用工具 > 自訂;要設定沒有文件時顯示的工具列, 在視窗邊框上按右鍵 > 工具列。
自己加的巨集按鈕不見了,可以重新加回去:
- 在文件開啟時按工具 > 自訂,或在視窗邊框上按右鍵 > 自訂。
- 在「指令」標籤的「工作列」選「巨集」。
- 在「按鈕」之下,把「新巨集按鈕」拖曳到 SOLIDWORKS 視窗中的任一工具列。
- 在「自訂巨集按鈕」對話方塊的「動作」按「瀏覽 (...)」,開啟要用的巨集;巨集有多個方法時,選要執行的「方法」。
- 在「外觀」按「選擇影像」選一張點陣圖。SOLIDWORKS 附的圖示在「安裝目錄 /data/user macro icons」; 自己做的圖示要 16 x 16 像素、256 色、白色背景。
- 需要時輸入「工具提示」與「提示」,按確定。
「自訂」對話方塊的「重設為預設值」可以只重設「工具列」標籤、只重設 CommandManager,或把所有標籤的所有自訂都重設為原廠預設值。 想找回工具列時,先確認選的是哪一個範圍,選錯會連其他自訂一起還原。
錯誤訊息對照
表格中的 Tools > References 是 VBA 編輯器的功能表,Microsoft 繁體中文說明把這個對話方塊稱為「參考」對話方塊。
| 看到的訊息 | 原因 | 怎麼處理 |
|---|---|---|
| 錯誤 91(Microsoft 說明標題為「未設定物件變數 (錯誤 91)」) | 巨集用 ActiveDoc 取得目前的文件,但執行時沒有開啟任何文件。依 API 說明,沒有啟用中的文件時ActiveDoc 會傳回 Nothing,後面一用到這個變數就中斷 | 先開啟巨集要處理的文件再執行。錄製的巨集只記錄操作步驟,不會替你檢查有沒有開文件;常用的巨集,請寫的人加上「沒開文件就提示」的檢查 |
升級後停在 Set swApp = Application.SldWorks 這一行,英文訊息為 Compile error: Object library feature not supported | 升級 SOLIDWORKS 後,舊巨集參考的 SOLIDWORKS 型別程式庫沒有被重新讀取 | 在 Tools > References 選取巨集參考的 SOLIDWORKS 型別程式庫,用上下箭頭調整優先順序後按 OK。 還是不行時再開一次,勾選一個巨集沒用到的型別程式庫按 OK;巨集能執行後,再取消勾選這一項 |
| 找不到專案或程式庫(Microsoft 說明標題) | 參考對話方塊裡有加上 MISSING 前置詞的參考:這台電腦找不到巨集參考的專案或物件程式庫, 例如巨集從別台電腦帶過來 | 選取 MISSING 的參考查看路徑與語言,用「瀏覽」找到對應的檔案後按確定,重複到沒有 MISSING 為止 |
編譯錯誤,指向 Declare 陳述式 | SOLIDWORKS 2013 SP0 起內建 VBA 7。SOLIDWORKS 2013 以前寫的巨集,Declare 陳述式在 64 位元系統的 VBA 7 上無法編譯 | Declare 陳述式要加上 PtrSafe 屬性;代表指標的引數改用 LongPtr 型別,32 位元與 64 位元都能用。SOLIDWORKS 2012 以前巨集用到的 32 位元 ActiveX 控制項,要在 64 位元系統上重新編譯 |
懷疑 VBA 沒裝好:安裝方式與修復
依 SOLIDWORKS 2025 說明,SOLIDWORKS 安裝管理員會一併安裝 Visual Studio Tools for Applications、Visual Basic、 .NET Framework 等 Microsoft 元件;電腦上沒有正確版本時,會在安裝 SOLIDWORKS 產品前自動安裝。 其中 Visual Basic for Applications 7.1 提供 Visual Basic 巨集支援;Visual Studio Tools for Applications 2022 標示為「選擇使用」,用在 VB.NET、C# 寫的 VSTA 巨集。
要特別注意的是公司用指令列或 Microsoft Active Directory 從管理安裝點部署:這種方式無法安裝這些 Windows 元件, 要先手動安裝。VBA 7.1 需要 vba71.msi 與 vba71_1033.msi(只需安裝 64 位元版本),繁體中文另外加 vba71_1028.msi。 電腦由 IT 部署的,請 IT 確認這一步有沒有做。
單機安裝的電腦,如果懷疑安裝本身有問題,可以用 SOLIDWORKS 安裝管理員修復:
- 開啟 Windows 控制台,按程式 > 程式和功能。
- 在要修復的 SOLIDWORKS 版本上按右鍵 > 變更。
- 在「歡迎使用 SOLIDWORKS 安裝管理員」畫面按「修復您的安裝」,再按下一步。
- 在「要修復的產品」選要修復的產品、清除其餘產品,按「修復」。
修復需要原本安裝時的所有來源檔案與已套用的 Service Pack,而且要在最初安裝的位置。 管理安裝點不能修復,要解除管理安裝點的安裝後再次安裝。
按了沒反應,或跑的不是想要的那一段
用工具 > 巨集 > 執行(或「巨集」工具列的執行巨集)開啟 .swp、.swb 時,如果巨集裡有不只一個函數或副程式, 會執行 VBA 專案中最近產生的模組裡、不含引數的最後一個副程式。巨集被別人改過或加了新模組時, 實際跑的可能不是你以為的那一段。
巨集按鈕、鍵盤快速鍵與滑鼠手勢,則是執行「自訂巨集按鈕」對話方塊裡選的「方法」。要檢查或修改:在文件開啟時按工具 > 自訂, 在「鍵盤」標籤的「類別」選「巨集」,在要編輯的巨集那一列按編輯圖示,於「自訂巨集按鈕」對話方塊修改後按確定。 巨集檔搬移或改名後,也是在這裡用「動作」的「瀏覽」重新指定。
另一種沒反應是選不到東西。錄製的巨集會用名稱選取特徵、基準面(API 的 SelectByID2), 名稱必須完全相符、大小寫也要一致;選不到時只會傳回 False,巨集不一定會停下來,後面的步驟就可能沒有作用。 這類問題見錄製的巨集換個零件就失效。
原本正常,換電腦或換檔案就出錯
換電腦就出錯,先看 Tools > References 有沒有 MISSING 的參考,再比對兩台電腦的 SOLIDWORKS 版本, 以及巨集是不是 SOLIDWORKS 2013 以前寫的(見上面的表格)。
換檔案就出錯,可能跟名稱有關:錄製時選的特徵、基準面名稱,另一個檔案裡不一定有相同的名稱。原因與改法見SOLIDWORKS 錄製巨集換零件就失效的原因與改法
升級版本或換語系後出錯
- 升級後舊巨集一執行就編譯錯誤:停在
Set swApp = Application.SldWorks時, 照表格第二列調整型別程式庫的優先順序。 - 從 SOLIDWORKS 2012 以前升級:2013 SP0 起是 VBA 7,舊巨集的
Declare陳述式要加PtrSafe。 - 中文版與英文版互換:中文版的預設基準面是前基準面、上基準面、右基準面,英文版是 Front Plane、Top Plane、Right Plane; 巨集用名稱選取時,換語系就對不上。
在中文作業系統上執行中文版 SOLIDWORKS 時,工具 > 選項 > 系統選項 > 一般 有「使用英文的特徵及檔案名稱(N)」: FeatureManager(特徵管理員) 設計樹狀結構中的特徵名稱會以英文顯示,並自動產生英文的檔案名稱。 要注意,選擇後既有的非英文特徵及檔案名稱不會更新。
需要更進一步時
巨集要排在下班後自動執行,見SOLIDWORKS 工作排程器設定的「執行自訂工作」。 如果巨集常常出錯、換了環境就要重新修改,或想把巨集做成可以安裝、統一更新的工具,見SOLIDWORKS 二次開發|巨集・外掛程式・設計自動化與SOLIDWORKS 自訂屬性批次寫入與檢查。
參考資料(SOLIDWORKS 2025 繁體中文說明):錄製和執行巨集、將巨集指定給工具列按鈕、修復安裝、工具列、顯示工具列、自訂工具列、巨集工具列、將巨集指定給鍵盤快速鍵或滑鼠手勢、修改巨集自訂、檔案位置選項、系統選項 - 一般、草圖、執行自訂工作、使用許可的要求(工作排程器)、在個別電腦上安裝、準備客戶端以便從管理安裝點進行指令列安裝、64 位元作業系統中從指令列安裝 Windows 必要元件; SOLIDWORKS API Help(英文):VBA Macros, Type Libraries, and SOLIDWORKS Upgrade、VBA and SOLIDWORKS x64、ActiveDoc、SelectByID2; Microsoft Learn:未設定物件變數 (錯誤 91)、找不到專案或程式庫
常見問題
Q:同一個巨集,別人的電腦可以執行,我的不行,是什麼原因?
先比對三件事:兩台電腦的 SOLIDWORKS 版本、執行時開的是哪一種文件,以及 VBA 編輯器 Tools > References 裡有沒有標示 MISSING 的參考。如果你的電腦是 IT 用指令列或 Microsoft Active Directory 從管理安裝點部署的,也要確認 Visual Basic for Applications 7.1 有先手動安裝。
Q:錯誤視窗的文字看不懂,該怎麼提供給人排查?
記下完整的錯誤訊息與代碼(不用截圖也可以直接抄下來)、執行當下開的是哪個檔案、檔案類型是零件、組合件還是工程圖。這些資訊比一句「巨集跳錯誤」更快找到原因。
Q:巨集要放在哪個資料夾,按「執行巨集」時才會直接開到?
按工具 > 選項 > 系統選項 > 檔案位置,在「顯示資料夾」選「巨集」,按「加入(A)」指定資料夾。之後按工具 > 巨集 > 執行時,執行巨集對話方塊會開在這個位置。
Q:可以把巨集設成鍵盤快速鍵嗎?
可以。在文件開啟時按工具 > 自訂,在「鍵盤」標籤的「類別」選「巨集」。巨集不在清單裡時,先在「新巨集按鈕」那一列按一下圖示,在「自訂巨集按鈕」對話方塊的「動作」按「瀏覽」開啟巨集,按確定後再照一般方式指定快速鍵。「滑鼠手勢」標籤也可以用同樣方式指定。
Q:巨集可以排在下班後自動執行嗎?
可以用 SOLIDWORKS 工作排程器的「執行自訂工作」,在「巨集檔案路徑」指定巨集,再設定執行模式與開始時間。要執行工作排程器的全部工作,需要 SOLIDWORKS Office、Professional、Premium 或 Ultimate 的使用許可;Standard 使用許可可以轉換檔案。