アクセス上位ページ
 
最近の更新内容
[NEXT] ⇒ (7)-b.GetAttr関数

Excel VBA ≫ 2.関数リファレンス - ファイル・フォルダ操作(7)-a.Dir関数

Dir関数

Dir関数は指定したパターンやファイル属性と一致するファイルまたはフォルダの名前を表す文字列 (String型) を返します。 引数 Attributes にはファイルの属性を表す定数を複数個加算して指定することができます。



  • 【構文】
    Dir ( [PathName] [, Attributes] )

      【戻り値】 文字列型 (String)


  • 引数名 省略 説明
    PathName ファイル名を表す文字列式を指定します。 フォルダ名およびドライブ名も含めて指定できます。 引数 PathName に指定した内容が見つからないときは、長さ 0 の文字列 (" ") を返します。
    Attributes 取得するファイルが持つ属性の値の合計を表す数式または定数を指定します。省略すると、標準ファイルの属性になります。


    引数 Attributes に指定可能な定数
    定数 説明
    vbNormal 0 標準ファイル(既定値)
    vbReadOnly 1 読み取り専用ファイル
    vbHidden 2 隠しファイル
    vbSystem 4 システム ファイル
    ※Windowsのみ
    vbVolume 8 ボリューム ラベル
    ※Windowsのみ
    vbDirectory 16 フォルダ
    vbAlias 64 エイリアス ファイル
    ※Macintoshのみ


  • <Dir 関数の主な使用方法>
    • ファイル存在チェック
    • 引数 PathName にファイルパスを指定して戻り値で判断します。 ファイルが存在すると何かしらの文字列(ファイル名)が返ってきます。存在しなければ長さ 0 の文字列 ("") が返ってきます。 引数 Attributes には必要に応じてファイルの属性(読み取り専用など)を指定します。
    • フォルダの存在チェック
    • 引数 PathName にフォルダパス、引数 Attributes に vbDirectory を指定して戻り値で判断します。 フォルダが存在すると何かしらの文字列(フォルダ名)が返ってきます。存在しなければ長さ 0 の文字列 ("") が返ってきます。
    • あるパターンにマッチするファイル名の取得
    • 引数 PathName にファイルパスのパターン(ワイルドカード含む)、 引数 Attributes に取得したいファイル属性を指定してDir関数を呼び出すことで、パターンにマッチするファイル名を取得できます。 2回目以降は引数は省略することで初回に設定した同一パターン、同一ファイル属性の次のファイル名を連続して取得することができます。
    • あるフォルダ内のサブフォルダ・ファイルの一覧取得
    • 引数 PathName にフォルダパス、引数 Attributes に vbDirectory 他、必要なファイル属性を指定して Dir関数を呼び出すことで、フォルダ内のサブフォルダおよびファイル名を取得することができます。 2回目以降は引数は省略してDir関数を使用します。

  • <サンプルファイル・フォルダ>

  • サンプルファイル・フォルダ

  • ファイル存在チェック例
  • ファイルの存在チェックをする例です。
    チェック対象のファイルが標準ファイルであることが分かっている場合、引数 Attributes は省略することができます。 読み取り専用や隠しファイルである可能性がある場合、引数 Attributes には"vbReadOnly + vbHidden"を指定します。

    ※vbNormal は値がゼロのため、指定してもしなくても第2引数の合計値はかわりません。
    Sub sample_ef071_01()
        Dim myFile      As String
        Dim strRtn      As String
    
        myFile = "C:\Users\Public\vba\test1.xlsx"
    
        '第2引数省略時はvbNormalが既定値になります。
        strRtn = Dir(myFile)
        Debug.Print "Dir関数戻り値:" & strRtn
    
        If strRtn = "" Then
            Debug.Print "ファイルは存在しません。"
        Else
            Debug.Print "ファイルは存在します。"
        End If
    End Sub
    

    <実行結果(イミディエイトウィンドウ)>
    Dir関数戻り値:test1.xlsx
    ファイルは存在します。
    


  • フォルダ存在チェック例
  • フォルダの存在をチェックする例です。
    引数 Attributes には"vbDirectory"を指定します。
    Sub sample_ef071_02()
        Dim myFile      As String
        Dim strRtn      As String
    
        myFile = "C:\Users\Public\vba\folder1"
    
        strRtn = Dir(myFile, vbDirectory)
        Debug.Print "Dir関数戻り値:" & strRtn
    
        If strRtn = "" Then
            Debug.Print "フォルダは存在しません。"
        Else
            Debug.Print "フォルダは存在します。"
        End If
    End Sub
    

    <実行結果(イミディエイトウィンドウ)>
    Dir関数戻り値:folder1
    フォルダは存在します。
    

  • パターンマッチ例
  • パターンマッチの例です。
    ファイル名にワイルドカードを使用してファイル名のパターンを設定します。 2回目以降Dir関数を使用する場合は引数を省略します。
    Sub sample_ef071_03()
        Dim myFile      As String
        Dim strRtn      As String
    
        myFile = "C:\Users\Public\vba\test*.*"
        '初回検索
        strRtn = Dir(myFile, vbReadOnly + vbHidden)
    
        Do Until strRtn = ""
            Debug.Print "Dir関数戻り値:" & strRtn
    
            '2回目以降は引数を省略してDir関数を使用
            strRtn = Dir
        Loop
    End Sub
    

    <実行結果(イミディエイトウィンドウ)>
    Dir関数戻り値:test1.xlsx
    Dir関数戻り値:test2.txt
    


  • サブフォルダ・ファイル一覧表示例
  • サブフォルダ・ファイル(読み取り専用と隠しファイルを含む)を一覧表示する例です。
    Dir関数の戻り値として"."と".."が返ってきますが、これらはそれぞれカレントフォルダと親フォルダを意味しています。 処理の中では特に使用しませんので、表示処理をバイパスするようにしています。
    Sub sample_ef071_04()
        Dim myFile      As String
        Dim strRtn      As String
    
        '最後の"*"はなくてもよいです。
        myFile = "C:\Users\Public\vba\*"
    
        '初回検索
        strRtn = Dir(myFile, vbReadOnly + vbHidden + vbDirectory)
    
        Do Until strRtn = ""
            Select Case strRtn
            Case ".", ".."
                'カレントフォルダと親フォルダの場合は出力しない。
            Case Else
                Debug.Print "Dir関数戻り値:" & strRtn
            End Select
    
            '2回目以降は引数を省略してDir関数を使用
            strRtn = Dir
        Loop
    End Sub
    

    <実行結果(イミディエイトウィンドウ)>
    Dir関数戻り値:AAA.xlsx
    Dir関数戻り値:folder1
    Dir関数戻り値:folder2
    Dir関数戻り値:test1.xlsx
    Dir関数戻り値:test2.txt
    

カテゴリ内ページ
Excel VBA 〜 総目次 〜
- 2.関数リファレンス
--- (7)-a.Dir関数
--- (7)-b.GetAttr関数
--- (7)-c.CurDir関数
--- (7)-d.FreeFile関数
--- (7)-e.EOF関数
--- (7)-f.FileLen、LOF関数
--- (7)-g.ChDir、ChDrive
--- (7)-h.Name
--- (7)-i.FileCopy
--- (7)-j.Kill
--- (7)-k.MkDir、RmDir



Page
Top