脱・マクロ記録!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自動化エンジニア」の入り口に立っています。もし行き詰まったら、いつでもまたここに戻ってきてください。共に更なる高みを目指しましょう!
