VBAで破損ファイルやパスワード設定されたファイルを開くときのエラーを回避する方法

エクセルVBA VBAのエラー対応方法



VBAマクロでエクセルファイルを自動的に次々に開くマクロを実行したときに、エラーが表示されてファイルが開けないときがあると思います。

エラーが表示してしまうと、そこでマクロが停止し、終了してしまいます。

とにかくエラーを回避して最後まで処理を終了するVBAマクロを探しているのでしたら、ぜひ参考にしていただきたいです。



エラーが出る理由と、回避方法

エラーが表示してしまう理由はいくつか考えられ、その対応方法(回避方法)は、以下のとおりです。

  • ファイルが破損している。 ⇒ ファイルを修復して開く。
  • パスワードが設定されている。 ⇒ テキトウなパスワードを入力し、ファイルを開かないで次のファイルの処理に移行する。
  • ファイルを開くと同時にマクロが自動的に実行される。 ⇒ マクロの自動実行を停止しておく。

以上のようにして作成したVBAを紹介します。

破損ファイル、パスワード設定されたファイル、マクロの自動実行を回避するサンプルコード

Sub エラー回避()

    Dim wb_book As Workbook
    Dim open_file As Variant
   
    Application.EnableEvents = False  'マクロ自動実行停止
    Application.DisplayAlerts = False  '破損ファイルのメッセージ停止
        
    On Error Resume Next
        
    Set open_book = Workbooks.Open(FileName:=open_file, _
                                corruptload:=xlRepairFile, _
                                UpdateLinks:=0, _
                                Password:="")   '破損ファイルを修復して開く、リンクを更新しない、パスワードは文字入力していない
    Application.EnableEvents = True  'マクロの自動実行を有効にする

End Sub

以上のコードでエラーを回避し、マクロの実行を次のファイルに移行できます。

ポイントは、上記コードのコメントになっているとおりなのですが、、、

パスワードについては、「Password:=””」というように、パスワードを聞かれてもあえて文字列を入力しないようにして、エラー表示が出てもスキップしています。

もし、パスワードエラーになったファイルに対して特定の動作を指定したければ、

Select Case Err.Number
        Case 1004
      実行したい処理
        End Select

というように記載します。

これは、パスワードの入力エラーナンバーが「1004」ですので、Select Case でエラーナンバー「1004」の動作を指定しています。

以上のようにしてVBAマクロで次々とエクセルファイルを開くときに表示される可能性があるエラーを回避する方法がありますので、参考にしてください。

コメント

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