Excelでオブジェクトを変数宣言するには
遅延バインディングと事前バインディングの2種類の方法がある。
実装の違い(例として、FileSystemObjectを利用)
- 遅延バインディング
Dim objFSO As Object Set objFSO = CreateObject("Scripting.FileSystemObject")
- 事前バインディング
「ツール」→「参照設定」で
「Microsoft Scripting Runtime」にチェックを付ける。
Dim objFSO As New FileSystemObject または、 Dim objFSO As FileSystemObject Set objFSO = New FileSystemObject
一言で言えば、変数宣言の型が
遅延バインディングはObject型
事前バインディングは特定のオブジェクト型
となっている。
オブジェクトが Object 型として宣言された変数に代入する場合、
遅延(実行時)にバインディングされる。
この型のオブジェクトは、任意のオブジェクトへの参照を保持できるが、
事前バインディングされたオブジェクトの利点をほとんど持たない。
特定のオブジェクト型として宣言された変数に代入する場合、
オブジェクトは事前(コンパイル時に)バインディングされる。
事前バインディングされたオブジェクトでは、アプリケーションが実行される前に、
コンパイラによってメモリの割り当てとその他の最適化が実行される。
また、自動クイックヒントが表示されるようになる。