こんにちは、わたあめです。VBAでファイルを開くと(Workbook.Open)、以下のエラーメッセージが出ました。

「このブックには、安全ではない可能性のある外部ソースへのリンクが 1 つ以上含まれています。」という警告メッセージです。処理中をメッセージを非表示にする"Application.DisplayAlerts = False"もマクロに入れていたのにも関わらずです。
折角マクロで自動化したのに、処理がストップしてしまうと、自動化の醍醐味がなくなってしまいますよね。ということで、今回はこの原因を深堀してみました。それでは、いってみましょう!
原因
Application.DisplayAlertsは、すべてのメッセージが非表示になるわけではないからです。重大なメッセージなどは非表示にならず、表示されるようです。今回のエラーは、Application.DisplayAlertsが効かない=非表示対象にならないメッセージのようでした。
Application.DisplayAlertsとは
そもそも、Application.DisplayAlertsとは何なのかですが、Excel操作中に出てくる確認メッセージを非表示にするというものです。わたあめがよく出会う確認メッセージは、以下です。
- 保存していないExcelファイルを閉じようとすると「Book.xlsxへの変更を保存しますか?」と聞かれる(SaveAsメソッド)
- シートを削除しようとすると「このシートは完全に削除されます。続けますか?」と聞かれる(Deleteメソッド)
マクロ処理中に上記のようなメッセージを表示させたくない時に(処理止まっちゃいますからね)、「Application.DisplayAlerts = False」と設定することで表示されなくなるというものです。
対処
対処方法としては、表示される確認・警告メッセージが出ないように、あらかじめVBA側でエラーを想定して処理を指定しておくことです。
分かりにくいと思うので、冒頭のエラーを例に具体的に説明していきたいと思います。
具体例
冒頭のエラーは、開こうとしているエクセルファイルの中に何かしらのリンクが設定してあって、「リンクあるけど開いても良いよね?リンクは更新して開く?それとも更新せずに開く?」という確認でした。ファイルを開くと、このメッセージが出ると想定できるので、あらかじめファイル内のリンクを更新して開くか、更新せずに開くかマクロの中で指定しておきます。
通常のファイルを開くマクロは以下です。
Workbooks.Open FileName:="C:\Book1.xls"
Openメソッドにはオプションを付けることができます。この基本のVBAの文に、更新するorしないの引数を付けておきます。
更新しない場合は以下の文になります。厳密に言うとUpdateLinksの値が0の場合は外部参照のリンクを更新しない、リモート参照のリンクを更新しないという設定です。
Workbooks.Open FileName:="C:\Book1.xls", UpdateLinks:=0
更新する場合は、以下の文になります。厳密に言うとUpdateLinksの値が3の場合は外部参照を更新する、リモート参照のリンクを更新するという設定です。
Workbooks.Open FileName:="C:\Book1.xls", UpdateLinks:=3
ちなみに、各値の設定値は調べれば出てきますが、設定値0~3によって、以下のような動作になります。
値 | 外部参照 | リモート参照 |
0 | リンク更新なし | リンク更新なし |
1 | リンク更新あり | リンク更新なし |
2 | リンク更新なし | リンク更新あり |
3 | リンク更新あり | リンク更新あり |
というように、あらかじめリンクを更新するか否かをマクロ側で指定しておくことによって、このメッセージは出なくなるという訳です。
調べ方
事前に想定してメッセージを出さないようにって言われても…と思ったりしますよね。わたあめは、マクロ処理中に表示されたくないメッセージが出てから、その対処をマクロ側に処理を加えてます。
調べ方としては、表示したくないメッセージが出てきたら、「メッセージ文+VBA+表示させない」というキーワードで検索します。
今回の例でいくと「このブックには、安全ではない可能性のある外部ソースへのリンクが 1 つ以上含まれています。 VBA 表示させない」みたいなキーワードでググるという事です。
さいごに
いかがだったでしょうか。非表示にしたいメッセージがApplication.DisplayAlertsが効かずに表示されてしまう!という方のお役に少しでも立てれば幸いです。
Excelに詳しくなりませんか?仕事にスグに役立つ最強の教科書をご紹介します!ページサンプルもあるので、チェックしてみてください♪
それでは、また!