【PR】を含みます。

プログラミング

【VBA】ファイルやフォルダの存在確認をする方法

VBA ファイルやフォルダの存在確認をする方法

VBAでファイルを保存したり、外部ファイルを読み込んだりするときは、あらかじめファイルやフォルダが存在するか確認しておくと安心です。

存在しないパスをそのまま使ってしまうと、実行時エラーの原因になることがあります。

本記事では、VBAでファイルやフォルダの存在確認をする方法を、サンプルコード付きで分かりやすく解説します。

結論:VBAの存在確認はDir関数を使うのが簡単

VBAでファイルやフォルダの存在確認をするなら、Dir関数を使う方法が簡単です。

シンプルに書けるため、初心者の方でも扱いやすい方法です。

結論
  • ファイルの存在確認はDir(パス)
  • フォルダの存在確認はDir(パス, vbDirectory)
  • 保存や読み込みの前に確認しておくとエラー防止につながる

VBAでファイルの存在確認をする方法

ファイルの存在確認は、Dir関数にファイルパスを指定することで行えます。

対象のファイルが存在する場合はファイル名が返り、存在しない場合は空文字が返ります。

Copyをクリックするとコピーできます。

VBA
Copy
Sub sampleFileExists()
    Dim filePath As String
    filePath = "C:\Users\user\Desktop\sample.xlsx"
    If Dir(filePath) <> "" Then
        MsgBox "ファイルは存在します"
    Else
        MsgBox "ファイルは存在しません"
    End If
End Sub

上記のC:\Users\user\Desktop\sample.xlsxの部分は、ご自身の環境に合わせて書き換えてください。

ポイント

  • Dir関数の戻り値が空文字でなければ存在している
  • もっとも手軽にファイルの存在確認ができる
  • 読み込み前のチェックにも使いやすい

VBAでフォルダの存在確認をする方法

フォルダの存在確認をしたい場合は、Dir関数の第2引数にvbDirectoryを指定します。

ファイル確認と似ていますが、フォルダ確認では引数が少し異なる点に注意しましょう。

Copyをクリックするとコピーできます。

VBA
Copy
Sub sampleFolderExists()
    Dim folderPath As String
    folderPath = "C:\Users\user\Desktop"
    If Dir(folderPath, vbDirectory) <> "" Then
        MsgBox "フォルダは存在します"
    Else
        MsgBox "フォルダは存在しません"
    End If
End Sub

上記のC:\Users\user\Desktopの部分は、ご自身の環境に合わせて書き換えてください。

ポイント

  • フォルダ確認ではvbDirectoryを付ける
  • 保存先フォルダの事前チェックに便利
  • 存在しないフォルダを指定したまま処理を進める事故を防ぎやすい

保存前にフォルダの存在確認をする例

実務では、ファイルを保存する前に保存先フォルダが本当に存在するか確認しておくと安心です。

存在しないフォルダへ保存しようとするとエラーになるため、事前チェックを入れておくとトラブルを防ぎやすくなります。

Copyをクリックするとコピーできます。

VBA
Copy
Sub saveIfFolderExists()
    Dim folderPath As String
    Dim savePath As String
    folderPath = "C:\Users\user\Desktop"
    savePath = folderPath & "\sample.xlsm"
    If Dir(folderPath, vbDirectory) = "" Then
        MsgBox "保存先フォルダが存在しません"
        Exit Sub
    End If
    ActiveWorkbook.SaveAs savePath
End Sub

なお、保存先フォルダが存在していても、同名ファイルの有無や保存形式の違いによって別のエラーが発生する場合があります。

そのため、必要に応じてファイル名の重複確認や保存形式の指定もあわせて検討しましょう。

VBAでファイル名に連番を付けて重複を防ぐ方法は以下の記事で紹介しています。

あわせて読む
VBA ファイル名に連番を付けて重複を防ぐ方法

【VBA】ファイル名に連番を付けて重複を防ぐ方法

VBAでファイルを保存する際、同名ファイルが存在すると上書きされてしまうリスクがあります。 本記事では、ファイル名の重複を自動で回避し、連番(例:test(1).txt)の付いたファイルパスを生成する ...

VBAで存在確認するときの注意点

ファイルとフォルダで確認方法が少し異なる

ファイル確認はDir(パス)、フォルダ確認はDir(パス, vbDirectory)を使います。

見た目は似ていますが、フォルダ確認では第2引数が必要です。

存在確認だけでは保存エラーを完全には防げない

フォルダが存在していても、同名ファイルがすでに存在している場合や、保存形式と拡張子が合っていない場合などはエラーになることがあります。

VBAでファイル名に連番を付けて重複を防ぐ方法は以下の記事で紹介しています。

あわせて読む
VBA ファイル名に連番を付けて重複を防ぐ方法

【VBA】ファイル名に連番を付けて重複を防ぐ方法

VBAでファイルを保存する際、同名ファイルが存在すると上書きされてしまうリスクがあります。 本記事では、ファイル名の重複を自動で回避し、連番(例:test(1).txt)の付いたファイルパスを生成する ...

保存や読み込みの前に確認しておくと安心

特に外部ファイルを扱う処理では、事前に存在確認をしておくだけでもトラブルを減らしやすくなります。

よくある質問

Dir関数はファイルにもフォルダにも使えますか?

使えます。

ファイルならDir(パス)、フォルダならDir(パス, vbDirectory)のように使い分けます。

存在しない場合は何が返りますか?

Dir関数は、対象が存在しない場合は空文字を返します。

保存前に存在確認したほうがよいですか?

確認したほうがよいです。

保存先フォルダが存在しないとエラーになるため、事前に確認しておくと安心です。

まとめ

今回は、VBAでファイルやフォルダの存在確認をする方法をご紹介しました。

  • ファイル確認はDir(パス)
  • フォルダ確認はDir(パス, vbDirectory)
  • 保存や読み込みの前に確認しておくと安心

特に実務では、存在確認を入れるだけでトラブルを防ぎやすくなります。

ぜひ活用してみてください。

-プログラミング
-, ,