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

バインディングについて、以下の通り、比較してみました。

バインディング 使用方法特徴
事前バインディング 参照設定する必要あり 処理速度が少し早い
インテリセンスが利用できる
固有のオブジェクト型が使用可能
実行時バインディングCreateObject関数を使用他のPCで動作不可の可能性が低い

サンプルマクロは、以下です。事前バインディングと実行時バインディングの違いと切替方法を示しています。

' 事前バインディングと実行時バインディングの違い、切替
' 開発時「事前バインディング」、配布時は「実行時バインディング」など
' 切替えたいときは、以下を参考にしてください。
Private Sub ChangeBinding()
    ' 以下の定数を、True:「事前バインディング」、False:「実行時バインディング」
    #Const HAS_REF = True
    
    #If HAS_REF Then
        ' 事前バインディング
        Dim FSO As FileSystemObject
        Set FSO = New FileSystemObject
        Dim myFiles As Files
        Dim myFile As File
    #Else
        ' 実行時バインディング
        Dim FSO As Object
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Dim myFiles As Object
        Dim myFile As Object
    #End If
    
    Set myFiles = FSO.GetFolder("C:\TEMP").Files
    
    ' すべてのファイル名を取得
    For Each myFile In myFiles
        Debug.Print myFile.Name
    Next myFile
    Set FSO = Nothing
End Sub

Follow me!