【入門編】【初心者向け】「読み取り専用」で開くべきか「通常」で開くべきか:実務上の判断基準とVBAでの切り替え – AutoCAD VBA解析バイブル

スポンサーリンク

AutoCAD VBAの「扉」を正しく開く:読み取り専用と通常モードの境界線

こんにちは。AutoCADの自動化という深淵な世界へ足を踏み入れた皆さん、ようこそ。

マクロの記録という「杖」を頼りに歩んできた皆さんが、自分の意思でAutoCADを操る「魔法使い」へと進化する時が来ました。今回取り上げるのは、多くの初心者が無意識に通り過ぎ、そして必ず一度は痛い目を見る「図面を開く際のモード選択(ReadOnly)」という極めて重要なテーマです。

「ただファイルを開くだけでしょ?」と侮るなかれ。ここには、AutoCADという巨大なアプリケーションと、ファイルシステムという現実の境界線で起きる「事故」を未然に防ぐための、プロフェッショナルの知恵が詰まっています。

—

1. なぜ「読み取り専用」という選択肢があるのか?

AutoCADで図面を開く際、VBAの `Open` メソッドには `ReadOnly` という引数が存在します。

  • ReadOnly := True(読み取り専用):

図面の内容を「見る」だけ。書き込み権限を持たないので、誰かが同じ図面を編集している最中でも安全にアクセスできます。

  • ReadOnly := False(通常モード):

図面の内容を「変える」権利を持つ。ファイルを独占的に開くため、他の誰かがその図面を編集することはできません。

現場の判断基準:

  • 「データを抽出するだけ」なら絶対にReadOnlyを選べ。 これを守るだけで、他の設計者が「書き込みロック」に阻まれて作業できないというトラブルを100%防げます。
  • 「図面に変更を加える」時だけ通常モードを使う。 「念のため」という甘えは、図面破壊の温床です。

—

2. 実装:プロの「オープン戦略」コード

それでは、現場で即戦力となるコードを見ていきましょう。ただ開くのではなく、「もし既に開かれていたらどうするか?」という点までケアするのが、一流の第一歩です。

Sub OpenDrawingExample()
Dim dwgName As String
Dim doc As AcadDocument

‘ 対象ファイルのフルパスを指定
dwgName = “C:\Projects\Design_001.dwg”

‘ 読み取り専用で開くか、編集用に開くかのフラグ
‘ ツール作成時は、引数を変数にして切り替え可能にするのが定石
Dim isReadOnly As Boolean
isReadOnly = True

‘ エラーハンドリングを追加(ファイルが見つからない等の事故を防ぐ)
On Error Resume Next

‘ 図面を開くメイン処理
‘ ReadOnly引数を明確に指定することが重要
Set doc = Application.Documents.Open(dwgName, isReadOnly)

If Err.Number <> 0 Then
MsgBox “図面のオープンに失敗しました。” & vbCrLf & “原因: ” & Err.Description
Exit Sub
End If

‘ 成功したことをユーザーに通知
If isReadOnly Then
MsgBox “読み取り専用モードで開きました。データ抽出用です。”
Else
MsgBox “編集モードで開きました。変更を保存できます。”
End If

On Error GoTo 0
End Sub

コードのここがポイント!

1. `On Error Resume Next`: ファイルがパス上に存在しない場合、AutoCADは容赦なくエラーを出して止まります。これを防ぐための「安全装置」です。
2. 引数の明示: `Open`メソッドの第2引数に `isReadOnly` を渡すことで、プログラムの意図を明確にしています。
3. ユーザーへのフィードバック: プログラムが勝手に動くのではなく、今どういう状態で開いているかをメッセージボックスで示す。これが「親切なツール」の条件です。

—

3. 陥りやすいエラーと罠

初心者が必ず一度は踏む地雷があります。それは「図面を閉じる時の挙動」です。

通常モード(ReadOnly:=False)で開き、何も変更を加えなかったとしても、AutoCADは「図面が開かれた」という事実だけで、閉じるときに「保存しますか?」と聞いてくることがあります。

【解決策】
もし、単に情報を読み取っただけで図面を閉じる場合は、以下のように記述してください。

‘ 変更を加えずに強制的に閉じる
doc.Close SaveChanges:=False

`SaveChanges:=False` を指定することで、余計な「保存の確認ダイアログ」を回避し、マクロを完全にバックグラウンドで完結させることができます。

—

4. 先輩からのメッセージ

AutoCAD VBAをマスターするコツは、「自分のコードが、図面ファイルという『公共の財産』にどう影響を与えるか」を想像することです。

  • 読み取るだけのときは、遠慮なく「読み取り専用」で。
  • 書き込むときは、責任を持って「通常モード」で。

この使い分けができるようになれば、あなたのツールは他のエンジニアからも信頼される「頼れる仕事道具」になります。

ここをクリアしたあなたは、もう初心者ではありません。次のステップは、複数の図面を高速で一括処理するループ処理ですね。それはまた別の機会に。まずは今日書いたコードで、手元の図面を安全に開いてみてください。

あなたの自動化ライフが、より快適で創造的なものになりますように!

タイトルとURLをコピーしました