こんにちは、VBA講師のタカハシです。前回までは「ファイル名がセルに入っている前提」でブックを開く基本コードを学びましたが、今回は実務で必ず直面する「落とし穴」を回避するためのテクニックを解説します。
存在しないファイルを指定した場合の対処法
実務では、ユーザーがセルに入力したファイル名が間違っていたり、そもそもフォルダ内に存在しなかったりすることが多々あります。何も対策せずにコードを走らせると、VBAがエラーで強制終了してしまいますよね。
そこで、Dir関数を使って「ファイルがあるかどうか」を確認してから開くという一手間を加えましょう。
Dir関数で実行時エラーを未然に防ぐ
以下は、実務で使える安全なコードの書き方です。
Sub OpenWorkbookSafely()
Dim targetPath As String
Dim fileName As String
‘ ファイルが置かれているフォルダパス
targetPath = “C:\Reports\”
‘ セルからファイル名を取得
fileName = Range(“A1”).Value
‘ Dir関数でファイルの存在を確認
If Dir(targetPath & fileName) <> “” Then
Workbooks.Open targetPath & fileName
Else
MsgBox “指定されたファイルが見つかりません。” & vbCrLf & “パスを確認してください。”, vbExclamation
End If
End Sub
なぜ「Dir関数」を使うのか?
初心者の方は「とりあえず開いてみて、エラーが出たらOn Error Resume Nextで無視すればいい」と考えがちです。しかし、それでは「開けなかったこと」に気づかないまま後続の処理が進んでしまい、結果的にデータが壊れる原因になります。
このように、処理の前に「条件を確認する」というステップを挟むだけで、マクロの堅牢性は劇的に向上します。
次回予告
さて、ここまでで「一つのブックを開く」ことは完璧ですね。次回は連載最終回として、「リストにある複数のファイル名を使って、一気に複数のブックを順次処理する」という、実務で最も要望の多い自動化テクニックをお伝えします。これさえ覚えれば、毎日手作業で開いていた数十個のファイル管理から解放されますよ。お楽しみに!
