【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
    Dim folderFullPath As String

    '存在有無を確認するファイルのパスを指定
    fileFullPath = "C:\Users\user\Desktop\aiueo.txt"

    '存在有無を確認するフォルダパスを指定
    folderFullPath = "C:\Users\user\Desktop\folder_001"
    
    'ファイルの存在確認
    If Dir(fileFullPath) <> "" Then
        MsgBox "ファイルが存在します。"
    End If

    'フォルダの存在確認
    If Dir(folderFullPath, vbDirectory) <> "" Then
        MsgBox "フォルダが存在します。"
    End If
    
End Sub


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

よって「Dir(“フルパス”)」の返り値を判定することでも、ファイル/フォルダの存在有無は確認できます。

ただ私はDir関数は可読性が良くないと考えるため、あまりオススメしません。
Dir関数を知らない人が「Dir(“フルパス”)」を見たら、「フルパスからファイル/フォルダ名を取得」していることを推測できません。

FileSystemObjectFileExists」の方が可読性が良いと考えるため、オススメします。
Dir関数を知らない人でもFileExists」や「FolderExistsという英単語から「ファイル/フォルダの存在有無を確認」していることを推測できます。
※英単語(名前)から処理の挙動を推測できることが、「名前」の素晴らしい部分(メリット)です。
※よって「変数名や処理名は適切な名前にしましょう」と一般的に言われています。

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