SolidWorks VBAの「常識」を塗り替える:早期バインディングで手に入れる開発の自由
こんにちは。自動化の世界へようこそ。
日々、SolidWorksのAPIと対峙していると、「なぜかコードが重い」「入力補完が効かなくて開発が進まない」という壁にぶつかることはありませんか?
多くの初心者が通る道、それは`CreateObject`を使った「遅延バインディング」です。しかし、今日でその卒業式を行いましょう。「早期バインディング」という技術をマスターすれば、あなたのマクロは別次元の速さと正確さを手に入れます。
—
1. なぜ「早期バインディング」が最強なのか?
まずは、2つの方式の違いを直感的に理解してください。
- 遅延バインディング(CreateObject):
プログラムを実行するたびに「SolidWorksの本体はどこかな?」とOSに聞きに行きます。これは非常に非効率で、かつ「実行するまでエラーがわからない」という爆弾を抱えています。
- 早期バインディング(参照設定):
コードを書く段階で「SolidWorksのこの機能を使います!」とあらかじめ宣言します。VBAは事前に仕様を完璧に把握できるため、爆速で動作し、入力補完(IntelliSense)が完璧に機能します。
結論:プロのエンジニアは、特別な事情がない限り必ず「早期バインディング」を使います。
—
2. 実践:早期バインディングの導入手順
まずは設定から。これだけで世界が変わります。
1. SolidWorks VBAエディタ(Alt + F11)を開きます。
2. メニューバーの [ツール] (Tools) -> [参照設定] (References) をクリック。
3. リストの中から以下にチェックを入れます。
- SldWorks 20xx Type Library
- SolidWorks 20xx Constant type library
- SolidWorks 20xx Commands type library
(※20xxはご使用のバージョン)
これで、VBAはSolidWorksの全能力を理解しました。
—
3. コードで比較:劇的な変化を体感せよ
【Before】遅延バインディング(初心者向け・非推奨)
‘ 実行するたびに型を推論するため、動きが鈍い
Dim swApp As Object
Set swApp = CreateObject(“SldWorks.Application”)
‘ メソッドやプロパティの補完が効かないので、スペルミスが起きやすい
【After】早期バインディング(プロの流儀)
‘ 明確な型定義!これによりIntelliSenseが最強の味方になる
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Sub CreateNewPart()
‘ Set文でSldWorksを定義。参照設定のおかげで「swApp.」と打つと全コマンドが候補に出る
Set swApp = Application.SldWorks
‘ 新規パーツ作成(参照設定があれば、メソッドの引数も自動表示される!)
Set swModel = swApp.NewDocument(“C:\ProgramData\SolidWorks\…\Part.prtdot”, 0, 0, 0)
If Not swModel Is Nothing Then
MsgBox “パーツ生成完了!”
End If
End Sub
—
4. 開発現場で陥りやすい「罠」と対策
早期バインディングに移行すると、一つだけ注意点があります。それは「バージョンの互換性」です。
- 罠: 2023版で設定した参照設定を、2024版で開くとエラーになることがあります。
- 対策: 開発環境と実行環境のバージョンを合わせること。もし不特定多数の環境で使うマクロなら、あえて「遅延バインディング」を選択するのも一つの戦略です。しかし、社内の業務自動化であれば、常に最新の早期バインディングを使うのが正解です。
—
5. 次のステップへ
「早期バインディング」を使い始めると、今まで「真っ暗闇の中で手探りで書いていたコード」が、まるで灯りがついたかのように書きやすくなるはずです。
- `swApp.` と打って、候補リストを眺めてみてください。
- `swModel.` と打って、どんなフィーチャ操作ができるか探索してください。
これが、SolidWorks APIを自在に操るための第一歩です。ここをクリアすれば、あなたはもう「マクロの記録」に頼るだけのユーザーではありません。自ら設計自動化のアーキテクチャを描くエンジニアの仲間入りです。
次は、パーツ生成だけでなく、スケッチの描画やフィーチャのパラメータ制御について深掘りしていきましょう。あなたの自動化ライフを、心から応援しています。
