●使用例 【ファイルの確認】
A = Dir(“C:\TEST\sample01.txt”)
●使用例 【フォルダーの確認】
A = Dir(“C:\TEST”, vbDirectory)
定数「attributes」 | 値 | 説明 |
---|---|---|
vbNormal | 0 | 標準ファイル(既定値) |
vbReadOnly | 1 | 読み取り専用のファイル |
vbHidden | 2 | 隠しファイル |
vbSystem | 4 | ファイルシステム |
vbVolume | 8 | ボリュームラベル |
vbDirectory | 16 | ディレクトリまたは、フォルダー |
下記のサンプルプログラムは、指定したファイルやフォルダーを検索して存在の有無を確認するサンプルプログラムです。
【ファイルの検索先】
“C:\TEST\sample01.txt”
' '******** AKIRA55.COM ******* https://akira55.com/dir/ ' Sub Dir関数01() '指定したファイルの存在を確認します。 Dim Check_File As String Check_File = Dir("C:\TEST\sample01.txt") 'ファイルを検索します。 If Check_File <> "" Then MsgBox "ファイルが存在します。" 'ファイルがある場合(ファイル名とメッセージを表示) Else MsgBox "ファイルがありません。" 'ファイルがない場合(メッセージを表示) End If End Sub '
下記のサンプルプログラムは、指定したフォルダーを検索して存在の有無を確認するサンプルプログラムです。
【フォルダーの検索先】
“C:\TEST\
' '******** AKIRA55.COM ******* https://akira55.com/dir/ ' Sub Dir関数02() '指定したフォルダーの存在を確認します。 Dim Check_Dir As String Check_Dir = Dir("C:\TEST", vbDirectory) '引数に「vbDirectory」を指定する事で、 If Check_Dir <> "" Then MsgBox Check_Dir & "フォルダーが存在します。" 'フォルダーがある場合(フォルダー名とメッセージを表示) Else MsgBox "ファイルがありません。" 'フォルダーがない場合(メッセージを表示) End If End Sub '
' '******** AKIRA55.COM ******* https://akira55.com/dir/ ' Sub Dir関数03() '指定したフォルダー内を一覧表示します。 Dim Check_Dir, SetFile As String Dim I As Long Cells.ClearContents 'シートの文字列を全て削除 I = 2 '2行目から表示 Check_Dir = "C:\Akira55\" Cells(1, "A").Interior.ColorIndex = 22 Cells(1, "A") = "フォルダー内一覧" SetFile = Dir(Check_Dir, vbNormal + vbDirectory) '普通ファイルとフォルダーを指定( vbNormal + vbDirectory) Do Until SetFile = "" 'ファイルとフォルダーがなくなるまで繰り返す If "." <> SetFile And ".." <> SetFile Then 'カレントフォルダー・親フォルダー以外を表示させる。 Cells(I, "A") = SetFile 'ファイル名または、フォルダー名をA列に表示します。 I = I + 1 '1行加算する。 End If SetFile = Dir '次のファイルかフォルダー取得 Loop '繰り返す。 End Sub '
下記のサンプルプログラムは、ダイアログボックスで選択したファイルの拡張子(種類)ごとに、ファイルをワークシートに振り分けるサンプルプログラムです。
【プログラムの流れ】
①ワークシートをクリアーする。
②ダイアログボックスでファイルを選択します。(拡張子ごとに振り分けるファイルを指定)
③選択したファイルの拡張子から拡張子の一意データを作成する。
④1行目に拡張子の一意データを表示します。
⑤拡張子ごとに、ファイルを振り分けます。
' '******** AKIRA55.COM ******* https://akira55.com/dir/ ' Sub Dir関数04() 'ダイアログボックスで選択したファイルの拡張子(種類)毎に、ファイルをワークシートに振り分けます。 Dim Ext_Collection As New Collection Dim FileList As Variant Dim FileName, Extension As String Dim I, L, M, X, lRow, lCol As Long Cells.Clear 'シートをクリアー FileList = Application.GetOpenFilename(FileFilter:="ファイル(*.*),*.*", MultiSelect:=True) 'ダイアログボックスを開きます(複数選択可能:MultiSelect:=True) If VarType(FileList) = vbBoolean Then 'ファイルを選択していなければ、プログラム終了 Exit Sub End If On Error Resume Next 'エラーが発生しても続行する。 For I = 1 To UBound(FileList) '選択したファイルを最後まで繰り返す。 L = InStrRev(FileList(I), "\") FileName = Mid(FileList(I), L + 1) 'パスからファイル名を抜き出す。 M = InStrRev(FileName, ".") Extension = Mid(FileName, M + 1) 'ファイル名から拡張子を抜き出す。 Ext_Collection.Add Extension, Extension '一意のデータを作成(拡張子) Next I On Error GoTo 0 For I = 1 To Ext_Collection.Count '1行目に一意のデータを表示する。B⇒G Cells(1, I + 1) = Ext_Collection(I) '一意のデータを順番に1行目に表示する。 Cells(1, I + 1).Interior.ColorIndex = I + 2 '1行目に背景色を塗りつぶす。3番の赤より~ Next I lCol = Cells(1, Columns.Count).End(xlToLeft).Column '一意のデータを代入された最終列を取得(列番号) For I = 1 To UBound(FileList) ''選択したファイルを最後まで繰り返す。 L = InStrRev(FileList(I), "\") FileName = Mid(FileList(I), L + 1) 'パスからファイル名を抜き出す。 M = InStrRev(FileName, ".") Extension = Mid(FileName, M + 1) 'ファイル名から拡張子を抜き出す。 For X = 2 To lCol If Extension = Cells(1, X) Then '1列名に表示されている拡張子と選択ファイルの拡張子が一致するか確認する。 lRow = Cells(Rows.Count, X).End(xlUp).Row + 1 '拡張子が一致した場合は、該当する拡張子の列の最終行+1を取得する。 Cells(lRow, X) = FileName '一致した拡張子の最終行+1にファイル名を記入する。 End If Next X Next I End Sub '