跳到主要內容
Hai 二次開發工作室

AutoCAD

AutoCAD 巨集是什麼?指令巨集、動作錄製器、VBA 與 LISP 的差別

同事說「用巨集跑一下」,指的可能是工具列上的一個按鈕,也可能是一支 VBA 或 LISP 程式。 這幾種東西能做的事、安裝方式和 AutoCAD LT 的支援範圍都不一樣。 以下依 Autodesk 的說明,用一般使用者的角度整理,不放程式碼。

本文目錄(6 節)

先講結論

  • 固定幾個步驟一鍵完成:用指令巨集(做成按鈕)或動作錄製器就夠了,不必寫程式
  • 同一組設定指令要在很多張圖上重複執行:可以寫成腳本檔(.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 安裝的提示。安裝方式:

  1. 到 Autodesk 的 VBA 模組下載頁,選擇與 AutoCAD 版本相同的模組
  2. 關閉 AutoCAD 與其他程式,執行下載的安裝檔
  3. 同一版本要換裝較新的模組時,官方說明要先移除目前已安裝的模組
  4. 裝好後重新開啟 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 VBAAutodesk: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 使用,官方下載頁只提供較新版本的模組。

LINE諮詢開發需求