【VBA】存在しないパスやファイルに対するエラーハンドリング

VBAでブックやファイルを開こうとしたとき、指定したパスやファイルが存在しないと実行時エラーが発生します。
これを防ぐには、事前に存在チェックを行い、見つからない場合はエラー処理に分岐させるのが安全です。


1. 基本的なチェック方法

  1. ファイルの場合 → Dir 関数で存在確認
  2. フォルダの場合 → Dir 関数にフォルダパスと vbDirectory を指定して確認
  3. 存在しない場合はメッセージを表示し、処理を終了

2. ファイル存在チェックのサンプル

Sub OpenWorkbookWithCheck()
    Dim filePath As String
    filePath = "C:\TestFolder\Report.xlsx" '開きたいファイルのパス
    
    'ファイル存在確認
    If Dir(filePath) = "" Then
        MsgBox "指定されたファイルが存在しません。" & vbCrLf & filePath, vbExclamation
        Exit Sub
    End If
    
    '存在する場合は開く
    Workbooks.Open filePath
    MsgBox "ファイルを開きました。", vbInformation
End Sub

3. フォルダ存在チェックのサンプル

Sub CheckFolderExists()
    Dim folderPath As String
    folderPath = "C:\TestFolder" '確認したいフォルダ
    
    'フォルダ存在確認
    If Dir(folderPath, vbDirectory) = "" Then
        MsgBox "指定されたフォルダが存在しません。" & vbCrLf & folderPath, vbExclamation
        Exit Sub
    End If
    
    MsgBox "フォルダが存在します。", vbInformation
End Sub

4. コード詳細解説

  • Dir(パス)
    ファイルまたはフォルダの存在を確認する関数
    見つかった場合は名前を返し、見つからない場合は空文字を返す
  • vbDirectory
    Dir 関数にフォルダ検索をさせるための引数
  • Exit Sub
    条件を満たさない場合、処理を途中で終了させる
  • Workbooks.Open
    指定ファイルを開くメソッド。パスが間違っているとエラーになるため、事前確認が重要

5. 実務での応用ポイント

  • ファイルダイアログを使ってユーザーに選ばせる
    Application.GetOpenFilename を使えば存在しないパスを指定するリスクを減らせる
  • 複数条件チェック
    「フォルダが存在しない」または「ファイルが存在しない」の両方を判定する複合チェックも可能
  • On Error文で補強
    存在確認と合わせて On Error GoTo エラー処理 を使えば、予期しないエラーにも対応できる

コメント

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