SolidWorks VBAの「マクロの記録」を卒業せよ:Early Bindingで手に入れる異次元の実行速度
こんにちは。SolidWorksの自動化の世界へようこそ。
「マクロの記録」でコードを吐き出し、なんとなく動かして満足していませんか?もしあなたが、複雑なアセンブリや数千のフィーチャを扱う現場にいるなら、今のままでは限界がすぐに訪れます。
今日は、SolidWorks VBAを「おもちゃ」から「武器」へと昇華させるための、「Early Binding(早期バインディング)」という極意を伝授します。これを知れば、あなたのマクロは劇的に速く、そして驚くほど壊れにくくなります。
—
1. なぜ「マクロの記録」だけではダメなのか?
SolidWorksの「マクロの記録」機能は便利ですが、あれはあくまで「操作の再現」に過ぎません。記録されたコードの多くは、`Object`型という「何でも入れられる箱」を使っています。
これを専門用語でLate Binding(遅延バインディング)と呼びます。
- Late Bindingの弱点: 実行するまでSolidWorksが「そのメソッドが本当に使えるか」を確認しません。そのため、実行速度が遅く、エラーも実行されるまで分かりません。
- Early Bindingの利点: 最初に「SolidWorksの部品を使うぞ!」と宣言することで、コードの実行前にコンパイル(翻訳)を行い、爆速で動作させます。さらに、入力中の補完機能(IntelliSense)が完璧に効くようになります。
—
2. 実践:Early Bindingへの移行手順
まずは、SolidWorksのライブラリを参照設定しましょう。
1. VBAエディタ(Alt + F11)を開く。
2. メニューの「ツール」→「参照設定」をクリック。
3. リストから以下にチェックを入れて「OK」。
- SOLIDWORKS 20XX Type Library
- SOLIDWORKS 20XX Commands Type Library
- SOLIDWORKS 20XX Constant Type Library
これで、あなたのVBAはSolidWorksのオブジェクトを「正体」として認識できるようになりました。
—
3. コードで比較:劇的な変化を体感せよ
【Before】Late Binding(マクロの記録に近い形式)
何が入っているか不明なため、SolidWorksは毎回「君は誰?このメソッド使える?」と確認しにいきます。
‘ 型が不明確。これではSolidWorksも困惑します
Dim swApp As Object
Dim swModel As Object
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
‘ 実行するたびにメソッドを検索するため、処理が重くなる
【After】Early Binding(プロの記述)
型を明示することで、SolidWorksは最初から何をするか理解しています。
Option Explicit ‘ 必須の儀式:変数の宣言漏れを許さない
Sub CreatePartOptimized()
‘ 参照設定により、型が明確に定義されます
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
‘ SolidWorks本体を取得
Set swApp = Application.SldWorks
‘ アクティブなドキュメントを取得
Set swModel = swApp.ActiveDoc
‘ もしファイルが開かれていなければ終了する安全装置
If swModel Is Nothing Then
MsgBox “パーツファイルを開いてください。”
Exit Sub
End If
‘ これ以降、swModel. と打てばメソッドが補完されます
‘ 実行速度もLate Bindingとは比較になりません
End Sub
—
4. 陥りやすい罠:`Option Explicit`を忘れるな
プロとして絶対に守ってほしいルールが一つだけあります。それはコードの冒頭に`Option Explicit`を記述することです。
これを書くと、変数を宣言せずに使うと即座にエラーを出してくれます。初心者のうちは「面倒だ」と感じるかもしれませんが、スペルミスによる「変数が空っぽでマクロが暴走する」という最悪のバグを未然に防ぐ、唯一の防波堤です。
—
5. まとめ:ここをクリアすれば「自動化エンジニア」の入り口
今日、あなたは以下の3つを手に入れました。
1. 参照設定による「型」の意識:コードがSolidWorksの機能を直接呼び出せるようになった。
2. Early Bindingによる高速化:実行時の余計な確認作業をカットした。
3. `Option Explicit`による堅牢性:バグを未然に防ぐ環境を作った。
これらは、どんなに高度な自動化システムを構築する際にも変わらない「土台」です。ここをクリアすれば、次はループ処理やフィーチャのパラメータ操作など、より面白い領域へ進めますよ。
まずは既存のマクロを、この「Early Binding」スタイルに書き換えることから始めてみてください。その瞬間に、あなたのSolidWorks操作は「作業」から「設計の自動化」へと進化します。
応援していますよ。何かあれば、またいつでも聞きに来てくださいね。
