【VBA】ファイル/フォルダの存在有無を確認する

この記事では
 ・ファイルの存在有無
 ・フォルダの存在有無
を確認する方法を記載します!

ファイルの存在有無を確認する

ファイルの存在有無は
 ・FileSystemObjectのFileExists
で確認します。

Option Explicit

Sub sample()
    
    Dim fso As Object
    Dim fileFullPath As String
    
    '存在有無を確認するファイルのパスを指定
    fileFullPath = "C:\Users\user\Desktop\aiueo.txt"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    'ファイルの存在確認
    If fso.FileExists(fileFullPath) Then
        MsgBox "ファイルが存在します。"
    End If
    
    '後片付け
    Set fso = Nothing
    
End Sub

フォルダの存在有無を確認する

フォルダの存在有無は
 ・FileSystemObjectのFolderExists
で確認します。

Option Explicit

Sub sample()
    
    Dim fso As Object
    Dim folderFullPath As String
    
    '存在有無を確認するフォルダパスを指定
    folderFullPath = "C:\Users\user\Desktop\folder_001"
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    'フォルダの存在確認
    If fso.FolderExists(folderFullPath) Then
        MsgBox "フォルダが存在します。"
    End If
    
    '後片付け
    Set fso = Nothing
    
End Sub

備考(Dir関数について)

ファイルの存在有無は、Dir関数でも確認できます。

Option Explicit

Sub sample()
    
    Dim fileFullPath As String
    
    '存在有無を確認するファイルのパスを指定
    fileFullPath = "C:\Users\user\Desktop\aiueo.txt"
    
    'ファイルの存在確認
    If Dir(fileFullPath) <> "" Then
        MsgBox "ファイルが存在します。"
    End If
    
End Sub

「Dir(fileName)」により、
 ・ファイルが存在する場合はフルパスから「ファイル名」
 ・ファイルが存在しない場合は「空文字」
を取得することができます。

よって「Dir(fileName)」の結果を判定することで、ファイルの存在有無が分かります。

ただ私はDir関数は可読性が良くないと考えるため、あまりオススメしません。
※「Dir(fileName)」を見ても、直感的に「フルパスからファイル名を取得」していることが分かりづらいと思います。

「FileSystemObjectのFileExists」の方が可読性が良いと考えるため、オススメです。
※FileExistsという英単語から、直感的に「ファイルの存在有無を確認」していることが分かりやすいと思います。

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