AutoCAD
AutoCAD 巨集是什麼?指令巨集、動作錄製器、VBA 與 LISP 的差別
同事說「用巨集跑一下」,指的可能是工具列上的一個按鈕,也可能是一支 VBA 或 LISP 程式。 這幾種東西能做的事、安裝方式和 AutoCAD LT 的支援範圍都不一樣。 以下依 Autodesk 的說明,用一般使用者的角度整理,不放程式碼。
先講結論
- 固定幾個步驟一鍵完成:用指令巨集(做成按鈕)或動作錄製器就夠了,不必寫程式
- 同一組設定指令要在很多張圖上重複執行:可以寫成腳本檔(.scr)
- 要依規則判斷、跳對話框、讀寫 Excel:就是寫程式了,常見的是 LISP、VBA 或 .NET 外掛
- VBA:AutoCAD 2010 起不再隨軟體安裝,要另外下載對應版本的 VBA 模組;AutoCAD LT 不支援
常被叫做「巨集」的五種東西
1. 指令巨集(按鈕、選單背後的那串指令)
功能區按鈕或選單項目按下去執行的,其實是一串「指令+選項+輸入值」,Autodesk 稱為指令巨集。 在「自訂使用者介面」編輯器裡可以自己新增按鈕、寫入要執行的指令順序。 適合「每次都照同樣順序下幾個指令」的情況,但沒辦法做判斷。
2. 動作錄製器(錄下操作,之後重播)
開始錄製後照平常的方式操作,AutoCAD 會把指令與輸入值記下來,存成動作巨集檔(.actm),之後可以重播。 可以設定重播到某一步時暫停、讓使用者自己點選。優點是完全不用寫程式; 缺點是錄的就是當下那一次的操作,圖面條件不同時容易不適用。
3. 腳本檔(.scr)
一個純文字檔,每一行是一個在指令列可以完成的指令,用 SCRIPT 指令執行。 腳本是在目前開啟的圖面上執行,常見用法是把一組固定的設定寫好,在每張圖上執行, 例如統一改圖層顏色、清除未使用的項目。腳本只會照順序執行,同樣沒有判斷能力。
4. AutoLISP
AutoCAD 內建的程式語言,可以選取物件、判斷條件、顯示對話框(DCL),是台灣最常見的「LISP 外掛」。 完整版 AutoCAD 一直都能用;AutoCAD LT 從 2024 起才支援,範圍也比完整版小, 詳見 AutoCAD LT 能用 LISP 嗎?。
5. VBA
Microsoft 的 Visual Basic for Applications,語言和 Excel 的 VBA 巨集相同,只是操作的對象換成 AutoCAD 的圖面與物件, 程式存成 VBA 專案檔(.dvb)。熟悉 Excel VBA 的人比較容易上手,也方便與 Office 互動。 它和前面幾種最大的差別是:要另外安裝 VBA 模組,而且只有完整版 AutoCAD 能用。
對照表:適合的工作與 LT 能不能用
| 種類 | 需要寫程式 | 適合的工作 | AutoCAD LT |
|---|---|---|---|
| 指令巨集 | 不用 | 固定步驟做成一個按鈕 | 可以 |
| 動作錄製器 | 不用 | 錄下重複操作後重播 | 目前版本可以 |
| 腳本檔(.scr) | 簡單 | 把固定的一組指令存起來重複執行 | 可以 |
| AutoLISP | 要 | 有判斷規則、對話框的工具 | LT 2024 起部分支援 |
| VBA | 要 | 延續既有 VBA 程式、與 Office 互動 | 不可以 |
| .NET 外掛 | 要 | 公司部署、長期維護的較大型工具 | 不可以 |
VBA 要另外下載模組
從 AutoCAD 2010 開始,VBA 不再隨 AutoCAD 一起安裝。沒裝模組時執行 VBA 相關指令, 會出現 VBA 不再隨 AutoCAD 安裝的提示。安裝方式:
- 到 Autodesk 的 VBA 模組下載頁,選擇與 AutoCAD 版本相同的模組
- 關閉 AutoCAD 與其他程式,執行下載的安裝檔
- 同一版本要換裝較新的模組時,官方說明要先移除目前已安裝的模組
- 裝好後重新開啟 AutoCAD
裝好之後,常用的 VBA 指令如下:
VBAMAN:以對話方塊管理 VBA 專案,可以載入、卸載、嵌入到圖檔或從圖檔萃取VBALOAD:載入 VBA 專案(.dvb)VBARUN:執行已載入專案中的巨集
公司很多台電腦都要用同一支 VBA 巨集時,每一台都要裝對應版本的模組。換 AutoCAD 版本時,也要跟著裝新版本的模組。
舊的 VBA 巨集,升級後不能用的原因
AutoCAD 2014 起改用 VBA 7.1,64 位元的 AutoCAD 會在同一個程序裡直接執行 VBA; 更早的 64 位元版本則是透過轉接的方式執行舊的 VBA。這個改變讓執行速度變快,但也帶來相容性問題:
- 32 位元的元件不能用:舊專案裡用到的 32 位元 ActiveX 控制項(.ocx)或型別程式庫,無法載入 64 位元的 AutoCAD
- 呼叫 Windows 功能的寫法要調整:直接呼叫 Windows API 的宣告,需要改成 64 位元相容的寫法
- 舊版本拿不到模組:還在用 AutoCAD 2013 以前版本的電腦,官方已無法提供 VBA 6 模組
所以「以前好好的巨集,換新版 AutoCAD 就跳錯誤」很常見。 如果程式碼還在、只是用到上面這些東西,多半可以修改後繼續使用;原始檔遺失、只剩無法開啟的專案時,就需要重新開發。
要做新工具,該選哪一種
- 先確認是不是 LT:LT 只能考慮指令巨集、動作錄製器、腳本,以及 LT 2024 起的 LISP
- 步驟固定、不需要判斷:先試指令巨集或動作錄製器,成本最低
- 要依圖面內容判斷、跳出設定對話框:LISP 通常是最直接的選擇,部署也簡單
- 公司已經有大量 VBA 程式:可以延續使用,但要把「每台電腦裝模組」與日後的維護一起考慮進去
- 多人部署、長期維護、要整合其他系統:我通常會評估 .NET 外掛,安裝與版本管理比較好控制
外掛程式的安裝與版本相容可以參考 AutoCAD 外掛程式怎麼安裝?; 想把重複的出圖、編號、轉檔做成工具,可以看 AutoCAD 二次開發・LISP 外掛。
參考資料:AutoCAD 2026 說明:關於指令巨集字串、AutoCAD 2026 Help:About Developing Applications With VBA、Autodesk:Download the Microsoft VBA Module for AutoCAD
常見問題
Q:AutoCAD LT 可以用 VBA 嗎?
不行。AutoCAD LT 不支援 VBA,LT 2024 起開放的是 AutoLISP。指令巨集、腳本與動作錄製器在目前版本的 LT 可以使用。
Q:執行 VBA 巨集時,出現 VBA 不再隨 AutoCAD 安裝的訊息怎麼辦?
代表這台電腦還沒有安裝 VBA 模組。到 Autodesk 的 VBA 模組下載頁,選擇與 AutoCAD 版本相同的模組安裝,裝好後重新開啟 AutoCAD 再執行。
Q:AutoCAD 2013 以前的版本,還下載得到 VBA 模組嗎?
通常下載不到。AutoCAD 2013 以前使用的是 VBA 6,Autodesk 自 2014 年 1 月 31 日起已不能再提供 VBA 6 給 AutoCAD 使用,官方下載頁只提供較新版本的模組。