関数・メソッド

ファイルまたはフォルダを抽出する【Dir関数】【ExcelVBA】

Dir関数は指定したファイルまたはフォルダの名前を返します。

構文

Dir[ (pathname [,attributes] ) ] 

引数の一覧は以下です。

引数定数(値)説明備考
pathname取得したいフォルダ名やファイル名を入力ワイルドカードを使用可能
attributesvbNormal0標準ファイル
vbHidden2隠しファイル
vbSystem4システムファイル
vbVolume8ボリュームラベルこちら選択すると、他は無効
vbDirectory16フォルダ

注意点

該当するデータがなければ0の文字列が返る
こちらのコードのみでは再起処理は出来ません
2回目以降はDir()と引数を渡さなければ、次の結果を返してくれます

どういった時に使う?

Dir関数をよく使うのはWindows上のファイル名を、抜き出す際でしょう。

詳しくは下記の記事を参照してください。
フォルダからファイルを一覧で抜き出す【エクセルマクロ】

使い方サンプル

Sub sample_Dir()
     
    Dim Path As String
    Dim FName As String
    Dim i As Long
     
    '■ファイル名取得するフォルダパス、該当拡張子を入れる
    Path = "C:\Sample\"
    FName = Dir(Path & "*.xlsx", vbNormal) 'ワイルドカード(*)を使用し、xlsx拡張子のファイルを全て
    
    '■■メモ
    'Dir(Path &"*.xlsx") でファイル名と一致した最初のファイル名を返します
    i = 1
     
    '■Loopでファイル一覧を取得する
    Do While FName <> ""
       Cells(i, 1) = FName
       i = i + 1
       FName = Dir()
    Loop
    
    '■■メモ
    '2回目移行の呼出は、Dir()。
    '全てのデータを抜き出した後は""(長さ0の文字列)で戻ってくる。
End Sub

その他応用する場合は以下。

    '■フォルダを抜き出すなら、拡張子は付けない
    Dir(Path & "*", vbDirectory)

    '■「チェックシート」から始まるファイルを抜き出すなら、ワイルドカードをうまく利用する
    Dir (Path & "チェックシート*")

    '■該当のファイルがあるかどうかチェックする場合
    If Dir("C:\Users\sample.xlsx") = "" Then
        Debug.Print "指定したブックファイルは存在しません"
    Else
        Debug.Print "指定したブックファイルは存在します"
    End If


関連記事

フォルダ内のファイルを、別フォルダへ一括コピペするマクロ【ExcelVBA】
フォルダ内のファイル名を一括で変更処理するマクロ【ExcelVBA】
フォルダからファイルを一覧で抜き出す【エクセルマクロ】
「フルパスから、パス、ファイル名、拡張子を分ける処理」をパーツ化する【ExcelVBA】
「ファイル名と拡張子を分ける処理」をパーツ化する【ExcelVBA】

コメント

タイトルとURLをコピーしました