VBAでブックやファイルを開こうとしたとき、指定したパスやファイルが存在しないと実行時エラーが発生します。
これを防ぐには、事前に存在チェックを行い、見つからない場合はエラー処理に分岐させるのが安全です。
1. 基本的なチェック方法
- ファイルの場合 →
Dir
関数で存在確認 - フォルダの場合 →
Dir
関数にフォルダパスとvbDirectory
を指定して確認 - 存在しない場合はメッセージを表示し、処理を終了
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 エラー処理
を使えば、予期しないエラーにも対応できる
コメント