忍者ブログ
VBAによる実用アプリケーションの構築、およびGAS(Google Apps Script)やOffice Scriptへのモダンな移行パスを検証・解説するテックブログ。現場で即戦力となるコードモジュールや再利用可能な実用部品を継続的に提供します。

【VBAサンプル】ブックを開く基本とエラー処理!ファイル不在を検知して安全に終了する方法

VBAで他のExcelファイルを操作するために最も頻繁に使うのが Workbooks.Open メソッドです。今回は、ファイルを開く基本操作に加え、ファイルが存在しない場合や破損している場合にマクロが強制終了しないよう、エラー処理(On Error GoTo)を組み込んだ堅牢な実装方法を解説します。

1. サンプル:エラー処理付きでブックを開く

指定したパスのブックを開きます。ファイルが見つからないなどの問題があれば、エラー内容をコンソールに出力して安全に終了させます。

Sub OpenWorkbookWithErrorHandling()
    ' エラーが発生したら ErrorHandler へジャンプ
    On Error GoTo ErrorHandler

    Dim filePath As String
    filePath = "c:\tmp\temp.xlsx"

    ' ブックを開く(Filename:= は省略可能)
    Workbooks.Open Filename:=filePath

    Exit Sub ' エラーがなければここで終了

ErrorHandler:
    ' エラー発生時に内容をコンソールへ出力
    Debug.Print "エラーが発生しました: " & Err.Description
End Sub

2. プログラムの解説

エラーに強いコードにするためのポイントです。

① On Error GoTo ErrorHandler
このコードにより、ブックが見つからない、パスが間違っている、ファイルが破損しているといった実行時エラーが発生した際に、プログラムをクラッシュさせることなくエラー処理ブロックへ誘導します。
② Exit Sub の重要性
正常に処理が完了した際、エラー処理ブロックまで実行してしまわないように、必ず `Exit Sub` を入れて処理を終了させることが重要です。
③ Err.Description
「ファイルが見つかりません」などのエラーメッセージをコンソール(イミディエイトウィンドウ)に出力します。これにより、マクロがどこで止まったのか、何が原因かを即座に把握できます。

3. 実行結果

■ 正常に開けた場合:

temp.xlsxが開きます。

■ ファイルが存在しないなどエラーの場合:

エラーが発生しました: File not found. (※実際のシステムエラー内容が出力されます)