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】
コメント