Dir関数は指定したファイルまたはフォルダの名前を返します。
構文
Dir[ (pathname [,attributes] ) ]
引数の一覧は以下です。
| 引数 | 定数(値) | 説明 | 備考 | |
| pathname | ー | 取得したいフォルダ名やファイル名を入力 | ワイルドカードを使用可能 | |
| attributes | vbNormal | 0 | 標準ファイル | |
| vbHidden | 2 | 隠しファイル | ||
| vbSystem | 4 | システムファイル | ||
| vbVolume | 8 | ボリュームラベル | こちら選択すると、他は無効 | |
| vbDirectory | 16 | フォルダ | ||
注意点
該当するデータがなければ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】



コメント