AutoCADを用いた設計・図面作成について「同じ作業を毎回繰り返して時間がかかる」「効率化の方法を知りたい」とお悩みではないでしょうか。それなら、作業効率化を実現するためにAutoCADのVBAを活用するのがおすすめです。
そこでこの記事では、AutoCADのVBAの基本的な仕組みから、できること・できないことまでわかりやすくまとめました。実務でよく使うコマンドやコピペで活用できるサンプルコードも紹介しているので、ぜひ参考にしてみてください。
AutoCADのVBAとは?
AutoCADのVBAとは、AutoCAD上でプログラムを実行して作業を自動化できる仕組みのことです。
正式名称は「Visual Basic for Applications」と言い、MicrosoftがExcelやWordに搭載しているVBAと同じ系統のプログラミング言語になります。
なお、AutoCAD導入初期はVBAが組み込まれていません。
日常的に発生する単純作業やルーティン処理をワンクリックで実行したいなら、Autodesk公式サイトから、VBAモジュールをインストールする必要があります。
また、AutoCADを導入したばかりだという方は、セミナー講習で基本操作や使い方から学ぶのがおすすめです。
| セミナー名 | AutoCAD基礎セミナー講習 |
|---|---|
| 運営元 | GETT Proskill(ゲット プロスキル) |
| 価格(税込) | 29,500円〜 |
| 開催期間 | 2日間 |
| 受講形式 | 対面(東京・名古屋・大阪)・ライブウェビナー・eラーニング |
AutoCADの自動化機能(AutoLISP・スクリプト)との違い
AutoCADにはVBA以外にも、AutoLISPやスクリプトといった自動化機能が存在します。
以下に、各自動化機能の違いを整理しました。
| 自動化の機能 | 特徴 | 得意分野 | 難易度・挫折しやすさ |
|---|---|---|---|
| VBA | Visual Basic系の文法で、Officeユーザーにも馴染みやすい | 条件分岐や複雑な処理を含む自動化 | 中級 (やや挫折しにくい) |
| AutoLISP | Lisp系の言語でAutoCADに古くから搭載されている | 作図やカスタマイズ | 中級〜上級 (挫折する人もいる) |
| スクリプト | コマンドを順番に自動実行できる | 単純で反復的な作業 | 初級 (挫折しにくい) |
上表からわかるように、もともとMicrosoft OfficeなどでVBAを利用していた方であれば、ほとんど同じ使い方であるため、すぐに活用できます。
また、特定のルールに従って操作をするため、初心者であっても基礎知識を身につければ、すぐにVBAを習得できるのが魅力です。
AutoCAD自体の使い方を学びたい方は、以下の記事もチェックしてみてください。
AutoCADのVBAでできること(繰り返し作業等の自動化)

AutoCADのVBAを活用すれば、時間のかかるルーティン作業を一括処理でき、業務効率が大幅に向上します。以下に、できることのイメージを整理しました。
| できることの例 | 具体例 |
|---|---|
| よく使う図形やテンプレートをワンクリックで配置 | ・線分・ポリライン・円の自動挿入 ・図枠テンプレートの配置 |
| オブジェクトや文字列を一括修正 | ・文字列や寸法の一括置換 ・線種や属性変更 |
| レイヤーや印刷設定の管理を効率化 | ・レイヤーを自動追加または削除 ・印刷設定を一括反映 ・出力処理の自動化 |
| 条件分岐を含む複雑処理を自動化 | ・条件Aならオブジェクト配置、条件Bなら削除というように指示を分岐 |
特に土木・建築、機械系の現場では、毎日のように繰り返し作業が発生しやすいため、担当者の負担を減らしつつヒューマンエラーを防げるのが魅力です。
CAD系のソフトを使う場合、VBAなどの内蔵機能とは別に、RPAといった外部ツールを使って自動化をするケースもあります。詳しくは以下の記事をチェックしてみてください。
AutoCADのVBAができないこと(3D処理・大規模開発)
AutoCADのVBAは便利な自動化機能ですが、すべての業務に活用できるわけではありません。
以下に、できないことをまとめました。
| できないことの例 | 理由 |
|---|---|
| 本格的な3Dモデリングやレンダリングの自動化 | VBAは主に2D作図・編集を対象に設計されているため、3D処理のサポートが限定的 |
| AutoCAD内で動く大規模システムの構築 | VBAは軽量なマクロ言語であるため、マルチスレッドや外部データベースとの連携に向いていない |
| 大規模モデルの一括演算や解析 | 処理速度やメモリ制約があるため、CADがフリーズする可能性あり |
特に「3Dモデリング」や「大規模なシステム開発」などの領域では制約があります。こうした限界を理解しておくことで、無理のない運用が可能になります。
AutoCADのVBAの入門的な使い方
AutoCADのVBAを利用するためには、あらかじめモジュールのインストールしたうえで、AutoCAD内でVBAを起動~コード実行までの流れを抑えておくことが大切です。
ここでは、各ステップごとにAutoCADのVBAの使い方をわかりやすく解説します。
- VBAモジュールのダウンロード・インストールする
- VBAエディタを起動する
- コードを記述して実行する
VBAモジュールのダウンロード・インストールする

AutoCADには標準でVBAが含まれていないため、Autodeskの公式サイトから専用モジュールをダウンロードしましょう。バージョンごとにモジュールが異なるため、必ず利用中のAutoCADのバージョンに合ったものを選びましょう。
なお、Mac版のAutoCADには対応していないため、Windows版での導入が必須です。
VBAエディタを起動する

VBAのインストール後は、AutoCAD内から直接VBAエディタを起動できます。
「管理>アプリケーション>Visual Basic Editor」を選択するか、コマンドラインに「VBAIDE」と入力することで起動可能です。
コードを記述して実行する

エディタを開いたら、簡単なサンプルコードを書いて実行してみましょう。
(後述するサンプルコードをコピペして使えます)
なお、コードを書き終えたら、いったん保存ボタンを押して任意の場所に、.dvb拡張子を格納します。その後、ツールバーにある実行ボタンをクリックすることで、AutoCADの作業画面上にVBAで設定した動作が反映されます。
AutoCADのVBAでよく使うコマンド(管理・作図・修正)
AutoCADのVBAを使いこなすためには、頻出コマンドを理解しておくことが欠かせません。
参考として「管理」「作図」「修正」の3分野に分けて実務でよく使うコマンドを整理しました。
| 分類 | 記述例 | 具体的な用途 |
|---|---|---|
| 管理系 | VBAIDE | VBAエディタを起動 |
| VBALOAD | プロジェクトをロード | |
| VBARUN マクロ名 | 指定したマクロを実行 | |
| 作図系 | object.AddLine(始点, 終点) | 線分を作成 |
| object.AddCircle(中心点, 半径) | 円を作成 | |
| object.AddLightWeightPolyline(points) | ポリラインを作成 | |
| 修正系 | オブジェクト.Offset(距離) | オブジェクトをオフセット |
| オブジェクト.Explode | オブジェクトを分解 | |
| Replace(対象文字列, “旧”, “新”) | 文字列の一括置換 |
たとえば、図面内の繰り返し修正や寸法調整をしたい場合には 「Replace」「Offset」 を使うだけで作業短縮が可能です。リファレンスなどをチェックしつつ、使いたいコマンドを探してみてください。
AutoCADのVBAサンプルコード集
ここでは、初心者がすぐに試せる実用的なサンプルコードを紹介します。
日常業務で役立つ処理をまとめているので、ぜひコピペして活用してみてください。
- ポリラインの線を引く
- ブロックを挿入する
- 文字列を一括置換する
線を引く(ポリライン作成)

AutoCADのVBAを使えば、手動で入力せずに特定の座標指定でポリラインの線を描画できます。
Sub DrawPolyline()
Dim plineObj As AcadLWPolyline
Dim points(0 To 3) As Double
‘ 始点 (0,0) → 終点 (100,100)
points(0) = 0: points(1) = 0
points(2) = 100: points(3) = 100
Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
End Sub
上記は、座標(0,0)(100,100)を結ぶポリラインを引くVBAのコードです。
「points」の項目を増やして座標を指示してあげることで、複数のポリラインを引くことも可能です。
ブロックを挿入する(自動配置)

あらかじめAutoCAD上にブロックを登録しておけば、特定の部品やタイトル枠などをVBAで自動挿入できるようになります。
Sub InsertBlock()
Dim blockRef As AcadBlockReference
Dim insertPoint(0 To 2) As Double
‘ 挿入位置を指定
insertPoint(0) = 50: insertPoint(1) = 50: insertPoint(2) = 0
‘ “自動車 -メートル-” は事前に定義されたブロック名
Set blockRef = ThisDrawing.ModelSpace.InsertBlock(insertPoint, “自動車 -メートル-“, 1#, 1#, 1#, 0)
End Sub
上記は「自動車 -メートル-」というブロック名の自動車を呼び出して挿入するコードです。
事前に登録しておく必要がある点に注意してください。
また独自のブロックを呼び出す場合には、” “の名称をブロック名に書き換えなければなりません。
文字列を一括置換する(修正処理)

VBAでは、図面内の文字(フォント)を一括で置き換える処理も可能です。
Sub ReplaceText()
Dim obj As AcadEntity
Dim pickPoint As Variant
Dim newText As String
ThisDrawing.Utility.GetEntity obj, pickPoint, “文字を選択してください”
If TypeOf obj Is AcadText Then
newText = Replace(obj.TextString, “旧”, “新”)
obj.TextString = newText
obj.Update
End If
End Sub
上記のコードを使えば、図面内に配置されている「文字オブジェクト(AcadText)」を選択して、その文字列の一部を置換できます。(ABC123という文字があった場合、123を999に置換すれば ABC999と書き換えられる)
実務でのAutoCADのVBA活用シーン(業界全般・特化)
AutoCADのVBAは、単に単純作業を効率化できるだけの機能ではなく、実務全体の効率化を実現できる便利なツールです。以下に、業界全般および業界特化の活用シーンをまとめました。
| 業界 | 状況 | VBAの活用シーン |
|---|---|---|
| 建築設計 | 新規図面作成のたびに、図枠・レイヤー・尺度設定を手作業で準備している | 標準テンプレートを呼び出して自動設定する |
| 土木設計 | 河川や道路の断面を手作業で描いている | 計算結果から自動で断面図を生成する |
| 製造設計 | 部品図面の型番が定期的に更新されており、手入力で書き換えている | 文字列を一括置換して自動修正する |
| 全般 | 複数図面で同じルーチン作業を毎回繰り返している | 条件分岐を含めて一括処理する |
AutoCADのVBAは、さまざまな業界で活用できるのが魅力です。
繰り返し作業や手入力に手間を感じているなら、まずはそこにVBAを当てはめられないかチェックしてみてはいかがでしょうか。
AutoCADのVBAを効率よく学ぶ方法

AutoCADのVBAを活用したいなら、まずは基礎知識を学ぶことが大切です。
以下に、これからVBAを学び始めたいという方向けにおすすめの学習方法を整理しました。
- 書籍で学ぶ
- 動画配信サイトで学ぶ
- Autodesk公式のリファレンスやマニュアルで学ぶ
なお、上記の独学で挫折した経験があるという方は、プロからVBAの操作方法や使い方を学べるセミナー講習を受講するのがおすすめです。
たとえば「実践的に学べるAutoCAD自動化セミナー」では、AutoCADのVBAを含め自動化機能の全容を実践的に学べます。
セミナー名 AutoCAD自動化セミナー 運営元 GETT Proskill(ゲット プロスキル) 価格(税込) 27,500円〜 開催期間 2日間 受講形式 対面(東京・名古屋・大阪)・ライブウェビナー・eラーニング
AutoCADのVBAについてよくある質問
AutoCADのVBAについてまとめ
AutoCADのVBAは、図面作成や修正のルーティン作業を効率化できる便利な自動化機能です。
繰り返し発生する業務をコード化することで、時間削減だけでなくヒューマンエラー防止にもつながります。
ただ3D処理や大規模開発には限界があるため、AutoLISPや.NET APIとの使い分けが必要であるため、まずは書籍を用いた独学、もしくはセミナー講習で効率的な学習をスタートしてみてはいかがでしょうか。