SolidWorks VBAの真髄:マクロ記録からの脱却と「早期バインディング」がもたらす圧倒的生産性
こんにちは。自動化の現場で日々、複雑な設計プロセスをコードで解き明かしているエンジニアです。
皆さんが普段使っている「マクロの記録」ボタン。あれは非常に便利な出発点ですが、いつまでもそれに頼っていては、SolidWorksの真の力を引き出すことはできません。今回は、「マクロの記録」という名の迷宮から抜け出し、プロのエンジニアが実践する「堅牢で高速なコード」を書くための作法を伝授します。
「なぜ自分のマクロは遅いのか?」「なぜエラー箇所が特定できないのか?」その答えは、すべてこの「早期バインディング」という概念に集約されています。
—
1. 大原則:`Option Explicit` を絶対的な掟とする
まず、コードの先頭に必ず書いてください。`Option Explicit`。
これは「変数の宣言を強制する」命令です。
Option Explicit ‘ これを書き忘れることは、地図を持たずに未開の地へ降り立つようなものです。
Sub Main()
Dim swApp As SldWorks.SldWorks
‘ 宣言を怠ると、スペルミス一つで新しい変数が勝手に生成され、
‘ 予期せぬバグの温床になります。
End Sub
変数を宣言しないプログラミングは、名前のない幽霊を追いかけるようなもの。バグの9割はこれで防げます。
—
2. なぜ「遅延バインディング」は悪なのか?
多くの初心者は、以下のような書き方をしてしまいます。
‘ 【非推奨】遅延バインディング
Dim swApp As Object
Set swApp = CreateObject(“SldWorks.Application”)
これがいわゆる「遅延バインディング(Late Binding)」です。`Object`型を使うと、VBAは「SolidWorksが起動してから、その中身が何であるかを確認しに行く」という余計な手間を毎回発生させます。これは実行速度の低下だけでなく、IntelliSense(コード補完)が効かないという致命的な弱点を生みます。
—
3. 早期バインディングによる「究極の最適化」
プロの現場では、「早期バインディング(Early Binding)」が標準です。事前にSolidWorksの型ライブラリを参照しておくことで、VBAはプログラム実行前にすべてを理解し、最高のパフォーマンスを発揮します。
手順:ライブラリの参照設定
1. VBAエディタのメニュー「ツール」>「参照設定」をクリック。
2. 「SldWorks 20xx Type Library」にチェックを入れる。
3. 同様に「SolidWorks Constant type library」等も追加。
これで、`swApp.`と打った瞬間に、利用可能なすべてのメソッドやプロパティがリストアップされるようになります。これが開発スピードを劇的に加速させる「IntelliSenseの魔法」です。
—
4. 実践:パーツファイルを新規作成する最適化コード
では、早期バインディングを用いた、堅牢で高速な「パーツ作成マクロ」をご覧ください。
Option Explicit
Sub CreateNewPartOptimized()
‘ 事前に参照設定されているため、具体的な型を指定できます
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim longstatus As Long
‘ SolidWorks本体を取得(既に開いているものを掴む)
Set swApp = Application.SldWorks
‘ 新規パーツの作成
‘ 第3引数(0)はパーツテンプレートを意味します
Set swModel = swApp.NewDocument(“Part”, 0, 0, 0)
‘ エラーハンドリングの意識:正しく作成されたか確認
If swModel Is Nothing Then
MsgBox “パーツの作成に失敗しました。”
Exit Sub
End If
‘ ここでジオメトリ操作を続行…
Debug.Print “パーツ名: ” & swModel.GetTitle
End Sub
このコードの「賢さ」のポイント
- 型定義の明確化: `SldWorks.ModelDoc2`のように型を明示することで、メモリ効率が最大化されます。
- IntelliSenseの活用: `swModel.` と入力するだけで、使える機能がすべて表示されるため、ヘルプを検索する時間を大幅に短縮できます。
- 堅牢性: `If swModel Is Nothing` で生成失敗をチェックする。現場のコードには、こうした「守り」が不可欠です。
—
5. 最後に:エンジニアとしてのマインドセット
「コードが動けばいい」という段階から、「コードが美しく、効率的で、保守しやすい」という段階へ。SolidWorks VBAをマスターするということは、単なる自動化を超えて、あなたの設計時間を奪う「繰り返し作業」を、一瞬の思考へと昇華させることです。
まずは、今書いているコードの `Object` をすべて具体的な型(`SldWorks.Feature`, `SldWorks.Component2` など)に書き換えることから始めてみてください。その瞬間に、IDE(エディタ)があなたを助けてくれることに感動するはずです。
ここをクリアすれば、あなたはもう脱・初心者です。次は、フィーチャ生成のアルゴリズム最適化の世界でお会いしましょう。質問があれば、いつでも現場の知見を共有しますよ。
