【Excelマクロ】ファイルの存在確認を自動化しよう

ファイルがないと処理が止まる?

Excel VBAでファイルを開く処理を行うとき、指定したファイルが存在しなければエラーが発生して、マクロが止まってしまいます。これは利用者にとって不親切ですし、業務の流れを止めてしまう原因になります。

そこで活用したいのが、ファイルの存在確認(チェック)を自動で行う仕組みです。事前に存在を確認してから処理を進めれば、エラーを未然に防げて、より安定したマクロにできます。

実装するメリット

  • エラーを未然に防ぐことができる
  • 利用者にわかりやすく状況を伝えられる
  • 不要な処理や存在しないファイルへのアクセスを防げる

Dir関数でファイルを確認する

ファイルの存在確認には Dir 関数を使います。

If Dir("C:\test\sample.xlsx") = "" Then

    MsgBox "ファイルが見つかりません。"
    Exit Sub

End If

解説

  • Dir("ファイルパス") は、指定したファイルがあればファイル名を表示し、なければ空の文字(””)となります。
  • そのため、空文字だった場合に「存在しない」と判断できます。
  • 処理の最初にこの確認を入れておけば、安全にマクロを動かせます。

具体例:存在チェック+ファイルを開く

Sub OpenIfExists()

    Dim filePath As String

    filePath = "C:\test\sample.xlsx"

    ' ファイルの存在確認
    If Dir(filePath) = "" Then
        MsgBox "ファイルが見つかりません。処理を中止します。"
        Exit Sub
    End If

    ' ファイルが存在するので開く
    Workbooks.Open filePath
    MsgBox "ファイルを開きました。"

End Sub

解説

  • 最初にファイルのパスを変数に代入しています
  • Dir で存在確認 → 空なら中断、あれば開く
  • メッセージボックスで結果を表示してわかりやすく

応用:複数ファイルの存在をまとめて確認する

Sub CheckTwoFiles()

    Dim filePath1 As String
    Dim filePath2 As String

    filePath1 = "C:\test\sample1.xlsx"
    filePath2 = "C:\test\sample2.xlsx"

    If Dir(filePath1) = "" Then
        MsgBox "ファイル1が見つかりません:" & filePath1
        Exit Sub
    End If

    If Dir(filePath2) = "" Then
        MsgBox "ファイル2が見つかりません:" & filePath2
        Exit Sub
    End If

    MsgBox "どちらのファイルも存在しています。"

End Sub

解説

  • 変数を2つ用意して順番に確認する方法です
  • Dir を2回使っていますが、どちらも正しく動作します
  • 初心者でも読みやすく、1つずつ確認する流れが見えやすくなっています

応用:存在しない場合に自動で作る(CSVなど)

Sub CreateIfMissing()

    Dim filePath As String

    filePath = "C:\test\log.csv"

    If Dir(filePath) = "" Then
        Open filePath For Output As #1
        Print #1, "ログファイルを作成しました:" & Now
        Close #1
        MsgBox "ファイルがなかったので新規作成しました。"
    Else
        MsgBox "ファイルはすでに存在しています。"
    End If

End Sub

解説

  • 存在しないときは Outputで新しく作成
  • Print で初期メッセージを書き込み
  • ログファイルやCSV生成などに応用できます

よくある注意点

  • パスが間違っていると、常に「存在しない」判定になる
  • Dir は1回の使用で検索状態がリセットされるため、複数のファイルを扱う場合はそれぞれ個別に確認する必要があります
  • ネットワークドライブ(共有フォルダなどは注意)では権限が関係してくることがある

まとめ

ファイルの存在確認は、マクロをスムーズに運用するためにとても重要な要素です。

  • Dir 関数を使えば簡単にチェックできる
  • 処理の最初に入れておけば、不要なエラーや混乱を回避できる
  • 必要に応じて、複数チェックや自動作成にも応用可能

まずはよく使うファイルを対象に、存在確認のコードをマクロの先頭に書き加えてみましょう。マクロの信頼性が一気に高まります。

コメント