VBA:事前バインディングと実行時バインディングの違い

VBA

事前バインディングと実行時バインディングの違い

VBAのバインディングとは、外部のオブジェクトの機能をVBAで利用できるようにすることです。

バインディングは2通りの方法があり、実行時に利用できるようにする実行時バインディング(遅延バインディング)と参照設定することで事前に利用できるようにする事前バインディングがあります。

それぞれのバインディングの特徴は以下のとおりです。

実行時バインディングの特徴

  • 配布先で参照設定をしなくて済む。
  • オブジェクト型として宣言された変数に代入される。
  • Publicとして宣言されているメンバーのみ利用できる。(FriendやProtected Friendとして宣言されているメンバーは利用できない)
  • インテリセンスが使えないため、スペルミスが発生しやすい。

事前バインディングの特徴

  • 参照設定が必要になる。
  • インテリセンス(コード補完機能)やダイナミックヘルプが使える。
  • コンパイラが効率の高いアプリケーションを生成してくれる。
  • コンパイラがコンパイル時のエラーを報告してくれる。

実行時バインディングの使い方

次のコードは、FileSystemObject オブジェクトを使用して実行時バインディングします。実行時バインディングは、初期設定が不要です。

事前バインディングの使い方

事前バインディングは、コードを書く前に参照設定を行う必要があります。

参照設定で設定する

ここでは、FileSystemObjectを利用する場合の参照設定をする方法を説明します。

  1. 「ツール」-[参照設定]をクリックします。
    参照設定を選択する
  2. 「参照設定」で、「Microsoft Scripting Runtime」を選択し、「OK」をクリックします。
    参照設定で、「Microsoft Scripting Runtime」を選択し、「OK」をクリック
  3. 事前バインディングのコードを書きます。

バインディングはどっちを使うべきか

事前バインディングは、コードの記述でインテリセンスが利用できるため、コードの記述が楽になります。また、Object型を利用しないため実行パフォーマンスが高速になりますので、通常は事前バインディングでコードを記述することをおすすめします。

しかし、ユーザーによって異なる環境設定が存在すれば、事前バインディングで作成したプログラムが動作しない可能性があります。この場合は、実行時バインディングの利用を検討したほうが良いかもしれません。