AutoCAD VBAの「別名保存」を極める:差分管理を自動化して設計の安全地帯を作ろう
こんにちは。自動化の現場で血と汗と涙を流してきた、AutoCADエンジニアの先輩です。
「マクロの記録」ボタンを押して、何となく動いたコードを眺める段階は卒業しましたか?おめでとうございます。ここからが、AutoCADを「操る」楽しさの始まりです。
今日は、実務で最も頻繁に発生する「図面のバックアップと差分管理」をテーマに、現在開いている図面を壊さずに別名保存する、堅牢なVBAコードを伝授します。
—
なぜ「別名保存」が自動化の第一歩なのか
設計の現場では、「今の状態をとりあえず残しておきたい」という場面が多々ありますよね。
手動で「名前を付けて保存」を繰り返していると、うっかり元の図面を上書き保存してしまい、冷や汗をかいた経験があるはずです。
VBAでこれを自動化すると、以下のメリットがあります。
- ヒューマンエラーの根絶: 決まったルールでファイル名(日付+連番など)が付与されます。
- 設計のイテレーション(反復)が加速: 試行錯誤のたびにコピーを取るのが一瞬で終わります。
—
実践コード:安全かつ確実に「別名保存」する
まずは、現在開いているドキュメントを取得し、名前を変えて保存するコードを見てみましょう。
Sub SaveAsCurrentDrawing()
‘ AutoCADの現在のドキュメントオブジェクトを取得
Dim doc As AcadDocument
Set doc = ThisDrawing
‘ 現在のパスを取得して、同じフォルダに保存先を作成
Dim folderPath As String
folderPath = Left(doc.FullName, InStrRev(doc.FullName, “\”))
‘ 保存する新しいファイル名(例:元ファイル名_Backup_YYYYMMDD_HHMM.dwg)
Dim fileName As String
fileName = Left(doc.Name, InStrRev(doc.Name, “.”) – 1) & _
“_Backup_” & Format(Now, “yyyymmdd_hhmm”) & “.dwg”
‘ フルパスを結合
Dim fullPath As String
fullPath = folderPath & fileName
‘ ★ここがポイント:SaveAsメソッドで別名保存
‘ ac2018_dwg は保存するDWGのバージョン。環境に合わせて変更可能
On Error Resume Next ‘ 万が一の権限エラー等に備える
doc.SaveAs fullPath, ac2018_dwg
If Err.Number = 0 Then
MsgBox “別名保存が完了しました: ” & vbCrLf & fileName, vbInformation
Else
MsgBox “保存に失敗しました。パスや権限を確認してください。”, vbCritical
End If
On Error GoTo 0
End Sub
—
コードの「魂」を読み解く:なぜこう書くのか?
このコードには、ただ動くだけでなく「実務で死なないための工夫」が詰まっています。
1. `ThisDrawing` オブジェクトの扱い
`ThisDrawing` は、マクロを実行しているその図面そのものを指します。これを使うことで、どの図面を開いていても、マクロがその図面を正しく認識してくれます。
2. `InStrRev` 関数の意味
ファイル名から拡張子(.dwg)を切り離すために使っています。パスの文字列操作は、AutoCAD VBAにおいて避けて通れない道です。ここをマスターすると、ファイル管理の自動化が劇的に楽になります。
3. `ac2018_dwg` という指定
`SaveAs` メソッドの第2引数は、DWGのバージョンを指定します。
- `ac2018_dwg`:AutoCAD 2018形式
- `ac2013_dwg`:AutoCAD 2013形式
取引先や社内の古いバージョン環境に合わせてここを書き換えるだけで、「バージョン互換の悩み」から解放されます。
—
陥りやすい罠と対策
Q. 「保存できない」エラーが出るのですが?
一番多い原因は「書き込み権限」または「保存先のパスが正しくない」ことです。
- ネットワークドライブの場合、オフラインだと書き込めません。
- `On Error Resume Next` を入れていますが、実務では保存後に `If Err.Number <> 0 Then…` と条件分岐させてログを残すのがプロの流儀です。
Q. 保存するたびに図面が閉じたりしませんか?
`SaveAs` は「現在の図面をその名前に切り替える」動作です。もし「別名で保存しつつ、元の図面で作業を続けたい」場合は、一度ファイルを閉じて開き直す処理が必要になるなど、少し高度な制御が必要です。まずはこのコードで「バックアップをとる」感覚を掴んでください。
—
次のステップ:あなただけのツールへ
このコードが理解できたら、次は自分好みにカスタマイズしてみましょう。
- ユーザーフォームを追加: 「保存ボタン」を画面上に配置して、ワンクリックで保存できるようにする。
- 自動命名ルール: プロジェクト番号や担当者名をファイル名に自動付与する。
AutoCAD VBAは、あなたの「面倒くさい」を「資産」に変える魔法の杖です。
今日書いたコードを、ぜひあなたの設計の現場で走らせてみてください。何か詰まったら、いつでも戻ってきてくださいね。また次のステップでお会いしましょう!
