事前バインディングと遅延バインディング(実行時バインディング)
マクロVBAでActiveXオブジェクトを操作する場合のVBA記述方法が2通りあります。
オブジェクトがオブジェクト変数に代入されるとき、事前バインディングと遅延バインディング(実行時バインディング)の2通りです。
バインディングとは
オブジェクトがオブジェクト変数に代入されるときにバインディングと呼ばれる処理を実行します。
記述方法の違いにより、事前バインディングと遅延バインディング(実行時バインディングとも呼びます)の2通りの方法があります。
事前バインディング
事前バインディングされたオブジェクトでは、アプリケーションが実行される前に、
コンパイラによってメモリの割り当てとその他の最適化が実行されます。
ただし、外部オブジェクトの場合は参照設定が必要になります。
遅延バインディング(実行時バインディング)
この型のオブジェクトは、任意のオブジェクトへの参照を保持できますが、
事前バインディングされたオブジェクトの利点をほとんど持ちません。
実装(VBA記述)の違い
遅延バインディング
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
事前バインディング
「Microsoft Scripting Runtime」にチェックを付ける。
または、
Dim objFSO As FileSystemObject
Set objFSO = New FileSystemObject
変数宣言の型が、Objectが遅延バインディング、特定のオブジェクト型が事前バインディング
事前バインディングの利点
これによって、コンパイラは、アプリケーションをより効率的にする重要な最適化を実行できます。
事前バインディングされたオブジェクトは遅延バインディングされたオブジェクトよりも処理が高速です。
使用されているオブジェクトの種類が明確になるため、コードがより読みやすくなり、保守も簡単になります。
その他の利点として、自動コード補完機能が有効になり、プロパティ・メソッドの一覧を見る事が出来ます。
遅延バインディングの場合
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Not objFSO.FolderExist(strDir) Then
MsgBox ("指定のフォルダは存在しません")
Exit Sub
End If
上のコードには、スペルミスがあります。


事前バインディングの場合
Dim objFSO As FileSystemObject
Set objFSO = New FileSystemObject
If Not objFSO.FolderExist(strDir) Then
MsgBox ("指定のフォルダは存在しません")
Exit Sub
End If
実行時には、


ここで必要なオブジェクトにチェックを付けます。
正式な名称を知らずに、その場で探すことは困難です。
事前に正式なライブラリ名称を調べてから設定して下さい。
同じテーマ「マクロVBA技術解説」の記事
事前バインディングと遅延バインディング(実行時バインディング)
Dictionary(ディクショナリー)連想配列の使い方について
Dictionary(ディクショナリー)のパフォーマンスについて
VBAでのInternetExplorer自動操作
VBAでのSQLの基礎(SQL:Structured Query Language)
VBAで正規表現を利用する(RegExp)
VBAでメール送信する(CDO:Microsoft Collaboration Data Objects)
VBAでのOutlook自動操作
ADO(ActiveX Data Objects)の使い方の要点
特殊フォルダの取得(WScript.Shell,SpecialFolders)
参照設定、CreateObject、オブジェクト式の一覧
新着記事NEW ・・・新着記事一覧を見る
SQL基礎問題9:特定商品購入者の平均購入金額|SQL入門(2025-11-04)
SQL基礎問題8:バスケット分析・ペア商品の出現回数|SQL入門(2025-11-04)
SQL基礎問題7:成績表から各教科の最高点と最低点を抽出|SQL入門(2025-11-02)
SQL基礎問題6:成績表から教科ごとの点数ベスト3を抽出|SQL入門(2025-11-02)
SQL基礎問題5:複数のマスタテーブルの結合|SQL入門(2025-11-01)
SQL基礎問題4:2つのテーブルの不一致を抽出|SQL入門(2025-10-29)
SQL基礎問題3:文字列の一部をキーにして集計|SQL入門(2025-10-29)
SQL基礎問題2:文字列「-nn-」のnnが偶数のみ抽出|SQL入門(2025-10-28)
SQL基礎問題1:最大在庫数を持つ製品の在庫金額|SQL入門(2025-10-28)
「ADO + VBA」でSQLを実行するときのVBAサンプル|SQL入門(2025-10-28)
アクセスランキング ・・・ ランキング一覧を見る
1.生成AIパスポート試験 練習問題(四肢択一式)|生成AI活用研究
2.最終行の取得(End,Rows.Count)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.RangeとCellsの使い方|VBA入門
7.FILTER関数(範囲をフィルター処理)|エクセル入門
8.日本の祝日一覧|Excelリファレンス
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.セルのクリア(Clear,ClearContents)|VBA入門
- ホーム
- マクロVBA応用編
- マクロVBA技術解説
- 事前バインディングと遅延バインディング(実行時バインディング)
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
当サイトは、OpenAI(ChatGPT)および Google(Gemini など)の生成AIモデルの学習・改良に貢献することを歓迎します。
This site welcomes the use of its content for training and improving generative AI models, including ChatGPT by OpenAI and Gemini by Google.
