Word VBA(Visual Basic for Applications)を使っていると、意図しないエラーが発生してマクロが途中で止まってしまうことがあります。特に、複数のファイルを処理する際など、エラーが発生しても処理を続けたい場合がありますよね。そんなときに役立つのが、VBAのエラー処理機能です。
今回は、初心者の方でもわかりやすく、Word VBAでエラーを無視して処理を続ける方法をご紹介します。これを覚えれば、マクロが途中で止まる心配が減り、安心して作業を進められるようになりますよ。
エラー処理の基本On Errorステートメントとは?
VBAでは、エラーが発生した際の動作を制御するために「On Error」ステートメントを使用します。これにより、エラーが発生しても処理を続行したり、指定した場所にジャンプしてエラー処理を行ったりすることができます。
On Error Resume Nextエラーを無視して次の行へ進む
このステートメントを使用すると、エラーが発生してもそのエラーを無視して、次の行の処理を続けることができます。例えば、ファイルが存在しない場合など、エラーが発生しても問題ない場合に有効です。
vba
Sub SampleMacro()
On Error Resume Next ' エラーを無視して次の行へ進む
' エラーが発生する可能性のある処理
' 例存在しないファイルを開く
Documents.Open "C:pathtononexistentfile.docx"
' エラーが発生しても処理は続行される
MsgBox "処理が完了しました"
End Sub
On Error GoTo ラベル名エラー発生時に指定した場所へジャンプ
このステートメントを使用すると、エラーが発生した際に指定したラベル(場所)に処理をジャンプさせることができます。エラー処理を集中させてコードを整理するのに役立ちます。
vba
Sub SampleMacro()
On Error GoTo ErrorHandler ' エラー発生時にErrorHandlerへジャンプ
' エラーが発生する可能性のある処理
' 例ゼロで割る
Dim result As Double
result = 10 / 0
' エラーが発生するとErrorHandlerへジャンプする
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました" & Err.Description
' エラー処理後の処理
Resume Next ' 次の行から処理を再開
End Sub
On Error GoTo 0エラー処理を無効にする
このステートメントを使用すると、現在のプロシージャ内で有効になっているエラー処理を無効にすることができます。エラー処理を終了したい場合に使用します。
vba
Sub SampleMacro()
On Error Resume Next ' エラーを無視して次の行へ進む
' エラーが発生する可能性のある処理
' 例存在しないファイルを開く
Documents.Open "C:pathtononexistentfile.docx"
' エラーが発生しても処理は続行される
On Error GoTo 0 ' エラー処理を無効にする
' 以降の処理では通常のエラー処理が適用される
End Sub
エラー処理を使う際の注意点
エラー処理は便利な機能ですが、使用する際にはいくつかの注意点があります。
- エラーを無視する前に、そのエラーが本当に無視しても問題ないか確認することが重要です。予期しないエラーを無視すると、後々問題が発生する可能性があります。
- エラー処理を使用した後は、必ずエラー情報をクリアすることが推奨されます。これにより、次回の処理で古いエラー情報が残らないようにします。
- エラー処理を適切に行わないと、マクロが途中で止まってしまったり、意図しない動作をする可能性があります。エラー処理は慎重に設計しましょう。
よくある質問や疑問
質問On Error Resume Nextを使うと、どんなエラーも無視してしまうのですか?
On Error Resume Nextを使用すると、その行で発生したエラーを無視して次の行へ進みます。しかし、全てのエラーを無視するわけではなく、エラーが発生した場合でも処理を続行したい場合に使用します。重要なエラーを無視しないように注意が必要です。
質問エラー処理を使うと、マクロの動作が遅くなりますか?
エラー処理を適切に使用することで、マクロの動作が遅くなることはありません。しかし、エラー処理を多用しすぎると、逆に処理が複雑になり、パフォーマンスに影響を与える可能性があります。必要な箇所で適切に使用しましょう。
質問エラー処理を使わないと、どうなりますか?
エラー処理を使用しないと、エラーが発生した際にマクロが途中で停止してしまい、以降の処理が行われなくなります。特に、大量のデータを処理する際などには、エラー処理を適切に行うことが重要です。
まとめ
Word VBAでエラーを無視して処理を続ける方法として、On Error Resume NextやOn Error GoTo ラベル名、On Error GoTo 0などのステートメントがあります。これらを適切に使用することで、エラーが発生してもマクロを途中で止めずに処理を続けることができます。
ただし、エラーを無視する前に、そのエラーが本当に無視しても問題ないかを確認することが重要です。エラー処理を適切に行うことで、より安定したマクロを作成することができます。
他にも疑問やお悩み事があれば、お気軽にLINEからお声掛けください。



コメント