「vba フォルダー内のファイルの有無を調べる fso」
という検索キーワードで、このサイト・インストラクターのネタ帳へのアクセスがありました。
VBA(Visual Basic for Applications)から、FileSystemObjectを利用して、特定のフォルダー内にファイルが存在するかどうかを調べるには、どのようなコードを書けばいいのかを探している方による検索です。
フォルダーにファイルが存在するかどうかを調べるサンプルマクロ
以下のようなマクロで、定数・FLD_PATHで指定したフォルダー(C:\tmp)に、ファイルが存在しているかどうかを調べられます。
Const FLD_PATH = "C:\tmp"
Dim fso As Object ' Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.GetFolder(FLD_PATH).Files.Count >= 1 Then
MsgBox "指定されたフォルダーにファイルが存在します。"
Else
MsgBox "指定されたフォルダーにファイルが存在しません。"
End If
Set fso = Nothing
FileSystemObjectオブジェクトのインスタンスを、オブジェクト変数・fsoにセットした、
Set fso = CreateObject("Scripting.FileSystemObject")
次の行、
If fso.GetFolder(FLD_PATH).Files.Count >= 1 Then
が、ファイルの有無をチェックしている箇所です。
ここで利用している「fso.GetFolder(FLD_PATH).Files.Count」というオブジェクト式の意味は、以下のとおりです。
「fso.GetFolder(FLD_PATH).Files.Count」
FileSystemObjectオブジェクトのGetFolderメソッドで、Folderオブジェクトを取得して、
「fso.GetFolder(FLD_PATH).Files.Count」
FolderオブジェクトのFilesプロパティで、Filesコレクションオブジェクトを取得して、
「fso.GetFolder(FLD_PATH).Files.Count」
FilesコレクションオブジェクトのCountプロパティで、
ファイルを表すFileオブジェクトの数を取得しています。
特定ファイルの有無を調べるサンプルマクロ
「vba フォルダー内のファイルの有無を調べる fso」
という検索をなさった方には、上記のマクロが参考になるはずですが、似たような検索キーワードで別のことを探していたケースも考えられます。
特定のフォルダーに、特定の名前のファイルが存在しているかどうかを調べたい、というケースも実務ではあります。
Const F_PATH = "C:\tmp\samp.xlsx"
Dim fso As Object ' Scripting.FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(F_PATH) Then
MsgBox "指定されたファイルが存在します。"
Else
MsgBox "指定されたファイルが存在しません。"
End If
Set fso = Nothing
特定のファイルが存在するかどうかをFileSystemObjectを使って調べるには、上記のマクロのように、FileSytemObjectオブジェクトのFileExistsメソッドを利用すれば、
OKです。
Home » FSO・FileSystemObjectの使い方 » FileSystemObjectでファイルの有無を調べる