【入門編】【SolidWorks VBA超入門】VBEの基本操作とイミディエイトウインドウを使ったオブジェクト構造の覗き方 – SolidWorks VBA解析バイブル

スポンサーリンク

こんにちは!SolidWorksの自動化の世界へようこそ。
「マクロの記録」ボタンを押して図形を描いてみたものの、出力された呪文のようなコードを前に「一体これは何なんだ……?」とフリーズしてしまった経験はありませんか?

安心してください。今日からあなたを導くチーフアーキテクトの私と一緒に、SolidWorks VBAの扉を叩けば、APIの構造は驚くほどクリアに見えてきます。

今回は、VBE(Visual Basic Editor)の基本操作から、プログラミング初学者が絶対にマスターすべき「イミディエイトウインドウを使ったオブジェクト構造の覗き方」までを徹底解説します。
ここをクリアすれば、あなたはもう「記録されたコードをただ動かすだけの人」ではありません。自分の手でSolidWorksを自在に操るエンジニアの仲間入りです。

1. 開発の舞台裏へようこそ:VBEの基本設定

SolidWorksでVBAを書くには、専用の開発環境であるVBE(Visual Basic Editor)を使います。まずは、その舞台裏を覗くための準備をしましょう。

VBEの起動とマクロセキュリティの解除

1. SolidWorksを起動し、適当な部品(Part)ファイルを開きます。
2. メニューバーの [ツール] > [マクロ] > [新規作成] をクリックし、適当な名前で保存します。
3. 自動的にVBEの画面(白いエディタ画面)が立ち上がります。

> ⚠️ 現場の知恵:セキュリティ設定の罠
> 初学者が一番最初にハマるのが「マクロが実行できない」というエラーです。SolidWorksのセキュリティ設定でマクロが無効化されている場合があるため、必ず `[ツール] > [オプション] > [システムオプション] > [セキュリティセンター]` から、マクロ設定を確認しておいてください。

コードが見やすくする「三種の神器」設定

VBEが開いたら、次の設定を済ませておきましょう。これだけで開発効率が劇的に変わります。

  • [表示] > [プロジェクト エクスプローラ](ファイルのツリー構造を表示)
  • [表示] > [プロパティ ウィンドウ](オブジェクトの詳細を表示)
  • [表示] > [イミディエイト ウィンドウ](←今回一番重要な主役です!

さらに、[ツール] > [オプション] > [編集タブ] の「変数の宣言を強制する(Require Variable Declaration)」に必ずチェックを入れてください。コードの先頭に自動で `Option Explicit` が入り、タイポ(打ち間違い)によるバグを未然に防いでくれます。

2. SolidWorks APIの心臓部:SldWorksとModelDoc2

SolidWorks VBAのコードを書くとき、私たちは常に2つの巨大なボス(オブジェクト)と対話しています。それが `SldWorks``ModelDoc2` です。

  • `SldWorks` (アプリケーション本体)

SolidWorksというソフトウェアそのものを指します。「新しいファイルを開く」「ファイルを閉じる」「アプリケーションの設定を変える」といった、全体を統括する役割を持ちます。

  • `ModelDoc2` (アクティブなドキュメント)

今、あなたの画面に開かれている「部品(Part)」「アセンブリ(Assembly)」「図面(Drawing)」そのものを指します。「スケッチを描く」「フィーチャーを追加する」「保存する」など、私たちが図面やモデルに対して行う操作のほとんどはこのオブジェクトを経由します。

3. 魔法の窓:「イミディエイトウインドウ」でオブジェクトを覗き見する

ここからが本題です。
初心者のうちは、「今、画面を開いているこの部品の名前は何だろう?」「どんなプロパティが使えるんだろう?」と迷うことが多々あります。そんな時、分厚いAPIヘルプをめくる必要はありません。イミディエイトウインドウにコードを打ち込んで、SolidWorksに直接話しかければいいのです。

イミディエイトウインドウの使い方

VBEの下部に表示させた「イミディエイト ウィンドウ」に `Debug.Print` という命令を打ち込むと、現在のSolidWorksの状態をその場で即座に出力(確認)できます。

以下のコードを、VBEの標準モジュールに貼り付けてみてください。

Option Explicit

Sub CheckCurrentModel()
‘ 1. SldWorksアプリケーション本体への参照を取得
Dim swApp As SldWorks.SldWorks
Set swApp = Application.SldWorks

‘ 2. 現在アクティブなドキュメント(ModelDoc2)を取得
Dim swModel As SldWorks.ModelDoc2
Set swModel = swApp.ActiveDoc

‘ 3. もし何も開いていなければ処理を中断
If swModel Is Nothing Then
MsgBox “アクティブなドキュメントがありません!”, vbExclamation
Exit Sub
End If

‘ 4. イミディエイトウインドウにファイル名を出力する
Debug.Print “— 現在のドキュメント情報 —”
Debug.Print “ファイル名: ” & swModel.GetPathName

‘ 5. ファイルの種類(部品・アセンブリ・図面)を判定して出力
Dim docType As Long
docType = swModel.GetType

Select Case docType
Case swDocPART
Debug.Print “種別: 部品 (Part) ドキュメントです。”
Case swDocASSEMBLY
Debug.Print “種別: アセンブリ (Assembly) ドキュメントです。”
Case swDocDRAWING
Debug.Print “種別: 図面 (Drawing) ドキュメントです。”
Case Else
Debug.Print “種別: 不明”
End Select

End Sub

実行してみよう

1. SolidWorksで適当な部品ファイルを開いた状態にします。
2. VBEに戻り、上記のコードの中にカーソルを置いた状態で、キーボードの `F5` キー(または上部の再生ボタン)を押して実行します。
3. VBEのイミディエイトウインドウ(Ctrl + G で表示)を見てみてください。

次のように出力されたはずです:

— 現在のドキュメント情報 —
ファイル名: C:\Users\YourName\Documents\TestPart.sldprt
種別: 部品 (Part) ドキュメントです。

これこそが、SolidWorks APIと対話する感覚です!
「今、SolidWorksはどういう状態にあるのか?」をコードでリアルタイムに確認できるこの手法は、中級者・上級者になってもデバッグの必須テクニックとして使い続けられます。

4. 陥りやすい罠:「Nothing」エラーとの付き合い方

SolidWorks VBAで最も多いエラー、それはズバリ 「オブジェクト変数が設定されていません。(実行時エラー 91)」 です。

先ほどのコードで、もしSolidWorks上に何もファイルを開いていない状態で `swModel.GetPathName` を実行しようとすると、このエラーが発生してマクロが強制終了します。

> 💡 チーフアーキテクトからのアドバイス
> 現場で動く「ロバスト(堅牢)なマクロ」を書くエンジニアは、必ず「取得したオブジェクトが本当に存在するか(Nothingではないか)」をチェックする防衛コードを入れています。

‘ 良い例:必ず存在チェックを行う
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then
MsgBox “ファイルを開いてから実行してください。”, vbCritical
Exit Sub
End If

「面倒くさいな」と思うかもしれませんが、このひと手間を惜しまないことが、現場で信頼されるマクロを作る唯一にして最大の秘訣です。

まとめ:ここをクリアすれば基本はバッチリ!

お疲れ様でした!今回は以下のポイントをマスターしました。

1. VBEの基本設定と、開発環境の整え方
2. SolidWorks APIの二大巨頭 `SldWorks` と `ModelDoc2` の関係性
3. イミディエイトウインドウを使ったオブジェクトの覗き方(`Debug.Print`)
4. オブジェクトが空っぽのときに起こるエラー(`Nothing`)への対策

ここをクリアしたあなたなら、もうマクロの記録の言いなりになる必要はありません。
SolidWorks VBAの基本は、もうバッチリです。

次回は、いよいよこの `ModelDoc2` を使って、図面上の要素を選択したり、パラメータを操作したりする実践的なステップに進みましょう。それでは、また次の開発現場でお会いしましょう!

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