Windows アップデートの影響したためか、つい最近まで使うことのできていたExcelマクロが突然「Bad Request – Request Too Long」のエラーを出すようになりました。
このマクロはダイアログを表示させて、画像を添付するだけの簡単なマクロで、特にマクロを修正したわけでもないのに、突然このエラーが出て使えなくなりました。
動作確認でわかったこと
- Excelマクロは変更していない
- ネットワークドライブ上にあったファイルをデスクトップに持ってきたが改善されない
- Edgeのキャッシュをクリアしたが改善されなかった
- パソコンの再起動でも改善されなかった
- 他のパソコンで同一ファイルを開いても問題なくマクロが動いた
- 同端末の管理者アカウントでログインしたところ、マクロが正常に動いた
- ダイアログを表示する際には「Webview2」というアプリが使われている
- 「Webview2」のアプリを修復してみたが改善されなかった
- Excelでキャッシュをクリアしたが改善されなかった
エラーの分析と対処方法
同端末の別ユーザーでは正常に動作することから、アプリ自身の問題ではないことがわかったので、キャッシュが悪さしているものと推測し、「Webview2」アプリのキャッシュクリアができないか絞り込んで調べていったら解決策を見つけることができました。
Webview2アプリのキャッシュクリア
以下のフォルダにアクセスします。「appdata」は隠しファイルなので、隠しフォルダを表示する設定に変更してからアクセスしてください。
C:\Users\(ユーザー名)\AppData\Local\Microsoft\Office\16.0\Wef\
隠しフォルダを表示する方法はこちらをご参照ください↓↓
Excelファイルをすべて閉じてから、当該フォルダにある「webview2」のフォルダをリネームして「webview2-bk」とします。問題があった場合に戻せるようにフォルダ削除ではなくリネームにしましたが、不要になれば削除でも問題ないと思われます。
リネーム後に該当のマクロ付きExcelを開くと同フォルダに「webview2」のフォルダが自動的に再作成されます。ダイアログを起動するマクロを実行すると、問題なくダイアログを開くことができました。
注意
この対処方法は調査する中で偶然発見できた対処法です。問題を含んだ対処法かもしれませんので、実行する際は自己責任で行ってください。
Bad Requestエラーが再発するときの対処法【2024/03/04 追記】
Windowsアップデートの影響か、「Bad Request – Request Too Long」のエラーが再発することがありました。上記のフォルダをリネームもしくは削除すれば解消されはするのですが、度々この深い階層にあるフォルダを削除するのは手間ですし、その都度対応に追われるのが面倒なので、バッチ処理を作りました。下の記事にまとめましたので、よければご参照ください。
Webview2フォルダ削除バッチが効かない!?【2024/04/01 追記】
前回の記事でBad Requestエラーの対処方法として、Webview2フォルダを削除するバッチを作りましたが、その処理を実施してもエラーが解消されない事象が発生しました。。一体このイタチごっこは何なのでしょうか。。それに対するさらなる対処方法を見つけたのでこちらもブログでまとめました。
しかしこれも一時的な対処療法でしかなく、同じ症状が再発するケースがありました。やはりエクセルVBA自体を作り変えないといけないと感じています。次はエクセルVBAの対応についてまとめたいと思いますので、しばらくお待ち下さい。
【解決】WebView2を使わずにファイル選択ダイアログを開く【2024/04/03追記】
WebView2を使ったファイル選択を使うことでこのエラーが引き起こるのであれば、WebView2を使わない旧来のファイル選択ダイアログボックスを開くようにエクセルVBAを修正すれば、この問題を解決できると思い、敬遠してきたエクセルVBAの修正に着手しました。誰が作ったかわからないエクセルVBAを直すのは気が引けたのですが、根本解決できる方法が他に見当たらなかったので、仕方有りませんね。修正に関してまとめました。エクセルVBAの修正ということで、難易度はかなり上がりますが、チャレンジしてみたいという方は御覧ください。
遠隔サポート・お問い合わせ
有償とはなりますが遠隔サポートやエクセルVBAの修正なども承っております。ご質問・ご相談等がありましたら次のページよりお問合せください。