こんにちは!AutoCADの自動化の世界へようこそ。
これまで「マクロの記録」ボタンを押してはみたものの、出力された呪文のようなコードに圧倒されて挫折しそうになっていませんか? あるいは、毎朝出社して最初にやる「新規図面を開いて、決まった画層(レイヤー)を作って、文字スタイルを整えて……」というルーティンワークに、密かな絶望を感じていませんか?
大丈夫。今日、その退屈な作業とはお別れです。
ここをクリアすれば、AutoCAD VBAの基本はバッチリですよ。
今回は、世界中のエンジニアが愛用する「社内標準テンプレート(DWT)を指定して、完璧に武装した新規図面を1秒で立ち上げる」魔法のようなマクロの作り方を、基礎から優しく、かつ本質的なエンジニアの視点でお伝えします。
—
なぜ「ただの新・図面作成」ではダメなのか?
AutoCADで普通に「新規作成」ボタンを押すと、AutoCADデフォルトの味気ない図面(`acad.dwt` など)が開きますよね。そこから毎回、
- 「あ、画層『C-LINE』を作るの忘れた」
- 「文字スタイルがメイリオになってない、ゴシックだ」
- 「寸法線スケールが違う!」
……なんて修正していませんか? これは時間の無駄だけでなく、図面の「品質のバラつき」を生む最大の原因です。
プロの自動化エンジニアは、「最初からルールが完璧に仕込まれたテンプレート(DWTファイル)」をコードから指名して呼び出すことで、この問題を根絶します。これをVBAで実現するのが、今回主役となる `Documents.Add` メソッドです。
—
魔法のレシピ:Documents.Add メソッドの正体
AutoCAD VBAにおいて、図面ファイル(DWGやDWT)はすべて `Documents` という巨大なコレクション(引き出しのようなもの)の中に管理されています。
その引き出しの中に、新しい図面を追加するのが `Documents.Add` です。
まずは、実際のコードを見てみましょう。あなたのVBAエディタ(Alt + F11で見られます)に、このコードを貼り付けてみてください。
実装コード
Sub CreateNewDrawingFromTemplate()
‘ エラーハンドリングの準備(プロの嗜みです)
On Error GoTo ErrorHandler
Dim targetTemplate As String
Dim newDoc As Document
‘ 【重要】あなたのPCやサーバーにある社内標準DWTファイルのパスを指定してください
‘ 例としてCドライブの直下としていますが、社内共有サーバーのパスでもOKです
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:
‘ 万が一のエラー時にAutoCADがフリーズするのを防ぎます
MsgBox “予期せぬエラーが発生しました: ” & Err.Description, vbCritical, “エラー”
End Sub
—
コードのここがポイント! 3つの重要概念
初心者のうちに、このコードの「心臓部」が何をしているのかをしっかり理解しておきましょう。
1. `ThisDrawing.Application.Documents.Add` の構造
- `ThisDrawing`: 今まさにあなたが触っている(あるいは背後で動いている)図面を指します。
- `.Application`: AutoCADという巨大なアプリケーションそのものです。
- `.Documents`: 開かれている(またはこれから開く)すべての図面の集合体です。
- `.Add(パス)`: カッコの中にDWTファイルのパスを渡すと、「そのテンプレートをベースにして、新しい無題の図面を立ち上げなさい」という命令になります。何も渡さなければデフォルトの新規作成になりますが、パスを渡すことで「社内標準の強制適用」が可能になります。
2. `Set newDoc As Document` の意味
VBAでは、新しく作った(あるいは開いた)オブジェクトを変数に格納するときに `Set` という特別な命令を使います。「これから作る新しい図面を、`newDoc` という名前の変数としてメモリーに保持してね」という意味です。これをやっておくと、後からこの図面に対して「線を引け」「文字を入れろ」と自由自在に命令できるようになります。
3. `Dir` 関数によるファイルチェック
実務で一番多いエラーは、「テンプレートのパスを間違えた」「共有サーバーのネットワークが切れていてファイルが見つからない」というヒューマンエラーです。コード内に `Dir(targetTemplate)` を仕込んでおくことで、ファイルが無い場合に即座に優しく警告を出して止めることができます。これがプログラミングの「おもてなし」です。
—
初心者が必ずハマる「罠(トラップ)」と回避策
ここを読んでおけば、実務で絶対に迷わなくなります。先輩からのアドバイスです。
トラップその1:ファイルパスの「¥(バックスラッシュ)」問題
VBAのコード内でフォルダのパスを書くとき、`”C:\Folder\File.dwt”` のように書きますが、プログラミング言語によっては `\` が特殊文字として扱われて文字化けやエラーの原因になることがあります。
AutoCAD VBAでは基本的にはそのまま動きますが、もし「パスが見つからない」と言われたら、ファイルが存在するか、エクスプローラーからパスをコピーして正しく貼り付けられているか(全角の¥マークになっていないかなど)を疑ってください。
トラップその2:拡張子は「DWT」であって「DWG」ではない
今回使うのはあくまでテンプレートファイル(.dwt)です。
間違えて既存の完成図面(.dwg)を指定してしまうと、テンプレートとしての新規作成ではなく、その図面が直接開いてしまい、うっかり上書き保存したときに元の図面を破壊してしまう大惨事になりかねません。必ず社内標準の「DWT」を指定してください。
—
さあ、次のステップへ踏み出そう!
お疲れ様でした!これであなたは、ただAutoCADを操作する人から、「AutoCADを意のままに操る自動化エンジニアの卵」へとレベルアップしました。
`Documents.Add` で完璧な状態の図面を開けるようになったら、次は「開いたその図面に対して、自動で文字を書き込んだり、特定の線を描画したりするコード」を組み合わせるだけです。
「ここをクリアすれば、AutoCAD VBAの基本はバッチリですよ。」
まずは手元のDWTファイルを用意して、上記のコードをVBAエディタに貼り付けて実行してみてください。ピコンとメッセージボックスが表示された瞬間、あなたの業務効率化の歴史が始まります。
それでは、快適なAutoCADライフを!
