目次
事前バインディングと実行時バインディングの違い
VBAのバインディングとは、外部のオブジェクトの機能をVBAで利用できるようにすることです。
バインディングは2通りの方法があり、実行時に利用できるようにする実行時バインディング(遅延バインディング)と参照設定することで事前に利用できるようにする事前バインディングがあります。
それぞれのバインディングの特徴は以下のとおりです。
実行時バインディングの特徴
- 配布先で参照設定をしなくて済む。
- オブジェクト型として宣言された変数に代入される。
- Publicとして宣言されているメンバーのみ利用できる。(FriendやProtected Friendとして宣言されているメンバーは利用できない)
- インテリセンスが使えないため、スペルミスが発生しやすい。
事前バインディングの特徴
- 参照設定が必要になる。
- インテリセンス(コード補完機能)やダイナミックヘルプが使える。
- コンパイラが効率の高いアプリケーションを生成してくれる。
- コンパイラがコンパイル時のエラーを報告してくれる。
実行時バインディングの使い方
次のコードは、FileSystemObject オブジェクトを使用して実行時バインディングします。実行時バインディングは、初期設定が不要です。
1 2 3 4 5 |
Dim fso As Object Dim f As Object Set fso = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder("C:\Users\Documents") |
事前バインディングの使い方
事前バインディングは、コードを書く前に参照設定を行う必要があります。
参照設定で設定する
ここでは、FileSystemObjectを利用する場合の参照設定をする方法を説明します。
1 2 3 4 5 6 7 8 9 10 11 |
Dim fso As FileSystemObject Dim f As Object Set fso = New FileSystemObject Set f = fso.GetFolder("C:\Users\Documents") ' ここで処理を書く ' オブジェクトへの参照を解除する Set f = Nothing Set fso = Nothing |
バインディングはどっちを使うべきか
事前バインディングは、コードの記述でインテリセンスが利用できるため、コードの記述が楽になります。また、Object型を利用しないため実行パフォーマンスが高速になりますので、通常は事前バインディングでコードを記述することをおすすめします。
しかし、ユーザーによって異なる環境設定が存在すれば、事前バインディングで作成したプログラムが動作しない可能性があります。この場合は、実行時バインディングの利用を検討したほうが良いかもしれません。