こんにちは!AutoCADの自動化の世界へようこそ。
「マクロの記録」ボタンを押して図形を描いてみたけれど、「なんだか自分の思い通りに動かないな」「毎回、画層(レイヤー)や文字スタイルを一から設定するのが面倒だな」と感じていませんか?
そのモヤモヤ、今日でスパッと解決しましょう。
今回は、AutoCAD VBAの基本でありながら、実務で最も重要となる「社内標準のテンプレート(DWT)を強制適用して新規図面を立ち上げるマクロ」の作り方を徹底解説します。
ここをクリアすれば、AutoCAD VBAのオブジェクトモデルの基礎はバッチリです。背伸びをする必要はありません。私と一緒に、一歩ずつ確実にマスターしていきましょう!
—
1. なぜ「テンプレート指定での新規作成」が重要なのか?
AutoCADで新しく図面を開くとき、何も指定しないままだと、AutoCADが最初から持っているデフォルトのまっさらな状態(`acad.dwt` や `acadiso.dwt`)で立ち上がってしまいます。
これの何が問題かというと……
- 必要な画層(Layer)が入っていない
- 会社規定の文字スタイルや寸法スタイルになっていない
- 縮尺や用紙サイズの設定がバラバラ
結果として、図面を開いたあとに手動で初期設定を行う羽目になり、ミスや手戻りの原因になります。
これをVBAの力で「社内標準のDWT(テンプレート)」を指定して一発で開くようにすれば、クリックした瞬間に、画層もスタイルも完璧にとのった「戦える状態の図面」が目の前に現れます。業務効率化の第一歩として、これほど強力な武器はありません。
—
2. 魔法のコード:`Documents.Add` の正体
百聞は一見に如かず。まずは、実際に動くコードを見てみましょう。
AutoCADのVBAエディタ([Alt] + [F11]キーで開けます)の標準モジュールに、以下のコードを貼り付けてみてください。
Sub CreateNewDrawingWithTemplate()
‘ エラーハンドリングの準備
On Error GoTo ErrorHandler
Dim targetTemplate As String
Dim newDoc As AcadDocument
‘ 【重要】あなたの環境にあわせた社内テンプレートのパスを指定してください
‘ 例: “C:\AutoCAD_Standard\CompanyStandard.dwt”
targetTemplate = “C:\AutoCAD_Standard\CompanyStandard.dwt”
‘ テンプレートファイルの存在確認(実務では必須の配慮です)
If Dir(targetTemplate) = “” Then
MsgBox “指定されたテンプレートファイルが見つかりません。” & vbCrLf & _
“パスを確認してください: ” & targetTemplate, vbCritical, “ファイルエラー”
Exit Sub
End If
‘ ★ここが今回の核心!テンプレートを指定して新規図面を作成する
Set newDoc = ThisDrawing.Application.Documents.Add(targetTemplate)
‘ 成功メッセージ
MsgBox “社内標準テンプレートを適用した新規図面の作成に成功しました!”, vbInformation, “完了”
Exit Sub
ErrorHandler:
‘ 万が一エラーが起きたときの安全装置
MsgBox “予期せぬエラーが発生しました: ” & Err.Description, vbCritical, “エラー”
End Sub
コードのここがポイント!
- `ThisDrawing.Application`
今あなたが触っているAutoCADのアプリケーション全体を指す「最高責任者」のようなオブジェクトです。
- `Documents.Add(パス)`
ここが最大の肝です。引数(カッコの中身)に `.dwt` ファイルのフルパスを渡すことで、「そのテンプレートをベースにした新しい図面世界を生成しなさい」とAutoCADに命令できます。引数を空にするとデフォルトの図面が開きますが、パスを渡すことで社内標準を強制できるのです。
- `Set newDoc = …`
新しく生まれた図面を `newDoc` という変数に代入(キャッチ)しています。これを行っておくことで、この後、新しい図面に対して線を描かせたり文字を入れたりといった自由な操作ができるようになります。
—
3. 初学者が必ずハマる「3つの罠」と対策
このマクロを実際に動かすとき、あるいは自分で応用するときに、初心者が必ずと言っていいほど躓くポイントがあります。先回りしてクリアしておきましょう。
罠その1:ファイルパスの書き方ミス(円マークの罠)
VBAでファイルパスを指定するとき、バックスラッシュ(`\`、環境によっては半角の「¥」マーク)は特殊文字として扱われることがあります。
基本的にはコード内の例のように `C:\Folder\File.dwt` と記述すれば問題ありませんが、もし「パスが見つからない」と言われたら、パスの文字列が間違っていないか、エクスプローラーからコピーしてダブルクォーテーションで囲んでいるかをもう一度確認してください。
罠その2:DWTのバージョン違いによるエラー
古いバージョンのAutoCADテンプレートを、新しいバージョンで無理やり読み込もうとしたり、その逆を行ったりすると、稀にAutoCAD側がダイアログを出して処理がストップしてしまいます。
VBAは裏側で動くため、人間が「OK」を押さなければならないダイアログが出ると、プログラムがフリーズしたように止まってしまいます。 テンプレートは常に使用しているAutoCADのバージョンと整合性の取れたものを使用しましょう。
罠その3:オブジェクトの生存期間(ライフサイクル)を意識していない
今回のコードでは `Dim newDoc As AcadDocument` と宣言しました。
VBA初心者からよくある質問で、「この変数、どこまで使えるの?」というものがあります。
`Documents.Add` で新しく作られた図面は、その瞬間からAutoCADの画面上に「アクティブな図面」として君臨し続けます。VBAの変数が消えても、図面自体はユーザーが閉じるまで存在し続けますので安心してください。
—
4. 先輩エンジニアからのエール
お疲れ様でした!ここまで読み進めたあなたなら、`AcadApplication.Documents.Add` の本質がしっかりと理解できたはずです。
「ただ図面を開く」という何気ない動作一つをとっても、テンプレートを指定して強制適用できるようになると、個人の作業スピードが上がるだけでなく、「チーム全体の成果物のクオリティを均一化する」という大きな価値を生み出せます。これこそが、業務自動化エンジニアの醍醐味です。
ここをクリアできたら、次は「新しく開いた図面に対して、自動で特定の文字を書き込む」「一括で画層を整理する」といった次のステップへと進んでみましょう。
あなたのAutoCAD自動化ライフが、素晴らしく快適なものになりますように。
それでは、また次の技術でお会いしましょう!
