【入門編】【マクロのUI拡張】UserFormを活用したオリジナル操作パネル(ダイアログ)の設計とイベント連携 – SolidWorks VBA解析バイブル

スポンサーリンク

脱・マクロ記録!SolidWorksの操作を「専用UI」で劇的に変える:UserForm活用術

こんにちは。SOLIDWORKSのAPIを操り、日々自動化の極地を追求しているエンジニアです。

「マクロの記録」ボタンを押して操作をなぞるだけの日々は、もう終わりにしましょう。あなたが今使っているそのコード、もっと使いやすく、そして「誰でも使えるプロ仕様」に進化させることができます。

今回は、「UserForm(ユーザーフォーム)」を使って、あなただけのオリジナル操作パネルを構築する方法を解説します。これをマスターすれば、設計現場の同僚が驚くような「専用ツール」が作れるようになりますよ。

1. なぜ「UserForm」なのか?

プログラムを実行するたびに黒いVBAエディタを開いたり、ただのメッセージボックス(MsgBox)で入力を求めたりしていませんか? それでは現場の設計者は疲弊してしまいます。

UserFormは、いわば「設計者とSOLIDWORKSの間の通訳」です。ボタン、テキストボックス、チェックボックスを配置し、直感的な操作画面を作ることで、入力ミスを激減させ、自動化の信頼性を飛躍的に高めることができます。

2. 最初のステップ:フォームの設計

まずはVBAエディタを開いてください。

1. メニューの「挿入」から「ユーザーフォーム」を選択します。
2. 「ツールボックス」から「コマンドボタン」を配置してみましょう。
3. プロパティウィンドウで、ボタンの`Name`を `btnExecute`、`Caption`を「部品情報を取得」に変更します。

これだけで、あなた専用のインターフェースの完成です。

3. コードの神髄:オブジェクト連携の極意

ここからが本題です。ボタンを押した時に「現在開いているドキュメントの名前」を取得して表示するコードを書いてみましょう。

実装コード例

‘ UserFormのコードモジュールに記述します

‘ ボタンがクリックされた時のイベント
Private Sub btnExecute_Click()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2

‘ 1. SldWorksアプリケーションを取得(これがすべての起点です)
Set swApp = Application.SldWorks

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

‘ 3. エラーハンドリング(ファイルが開かれていない場合の対策)
If swModel Is Nothing Then
MsgBox “ドキュメントが開かれていません!”, vbExclamation
Exit Sub
End If

‘ 4. 操作の実行(ここでは名前を表示)
MsgBox “現在のモデル名: ” & swModel.GetTitle, vbInformation

End Sub

【知っておくべき極意】

  • SldWorksオブジェクト: 常にシステム全体の頂点に立つ司令塔です。
  • ModelDoc2オブジェクト: 部品、アセンブリ、図面といった「ドキュメントの共通インターフェース」です。これ一つで、ほとんどの属性操作が可能になります。
  • Nothing判定: APIを使う上で最も重要な「作法」です。開かれていないドキュメントを操作しようとするとSOLIDWORKSは即座にクラッシュ(あるいはVBAエラー)します。必ず `Is Nothing` を確認する癖をつけてください。

4. マクロからフォームを呼び出す

フォームを作っただけでは、SOLIDWORKSから起動できません。標準モジュールに以下のコードを書き、ここを入り口にしましょう。

‘ 標準モジュール(Module1など)に記述
Sub ShowMyTool()
‘ フォームをメモリに読み込んで表示する
UserForm1.Show
End Sub

これで、SOLIDWORKSの「マクロの実行」からこの `ShowMyTool` を選択すれば、あなた専用の操作パネルが画面に現れます!

5. 初心者が陥りやすい「落とし穴」

  • 「フォームを閉じてもメモリに残る」問題:

フォームを閉じるときは、単に隠すだけでなく `Unload Me` を使うのが作法です。これを忘れると、メモリリークの原因や、次に開いた時に古い状態が残るバグを生みます。

  • オブジェクトの解放:

コードの最後には `Set swModel = Nothing` と記述して、メモリを適切に解放する習慣をつけましょう。これは、数千行のコードを書くようになる将来のあなたへの「恩返し」です。

最後に:自動化は「設計者のための武器」である

VBAを学ぶことは、単なるプログラミングの学習ではありません。それは「退屈な手作業を排除し、設計者が本来集中すべき『創造的な思考』の時間を守ること」です。

今回作成したフォームは、いわば「自分専用のCADコマンド」です。まずはこのフォームに、自分のよく使う操作を一つだけ追加してみてください。そこから先は、あなたの無限の可能性が広がっています。

ここをクリアすれば、あなたはもう立派な「SOLIDWORKS自動化エンジニア」の入り口に立っています。もし行き詰まったら、いつでもまたここに戻ってきてください。共に更なる高みを目指しましょう!

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