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

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

PR

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

ファイルの存在有無は
 ・「FileSystemObject」の「FileExists」メソッド
で確認できます。

ここでは例として
 ・デスクトップ配下のファイル「aiueo.txt」の
 ・存在有無を確認
します。

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

ファイルが存在する場合、「FileExists(“ファイルのフルパス”)」の返り値は「True」となります。
※存在しない場合の返り値は「False」となります。

PR

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

フォルダの存在有無は
 ・「FileSystemObject」の「FolderExists」メソッド
で確認できます。

ここでは例として
 ・デスクトップ配下のフォルダ「folder_001」の
 ・存在有無を確認
します。

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

フォルダが存在する場合、「FolderExists(“フォルダのフルパス”)」の返り値は「True」となります。
※存在しない場合の返り値は「False」となります。

PR

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

PR

参考

上記のVBAコードで使用した以下の詳細については、公式サイトをご確認ください。

●「FileSystemObject」の「FileExists」メソッド


●「FileSystemObject」の「FolderExists」メソッド


Dir関数

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