VBA:OneDriveをインストール・アップデート後にVBAがエラーになる場合の対応方法(原因:パスがURLになるため)
- WindowsUpdateをしたらVBAが動作しなくなった
- OneDriveを入れたらVBAでエラーが出るようになった
- 昨日まで動いていたツールが動かなくなった
原因は様々なのですが、ここではOneDriveに関連したトラブルの原因と解消方法を説明します。
1.問い合わせ内容
「昨日まで動いていたツールが以下のようにエラーとなり動かなくなった。」という問い合わせがきます。
2.状況確認
この画面だけだと何が原因か分からないので「デバッグ」を押してどこで引っかかってるか見てみます。
今回の例では、デバッグを押してみると「Dir関数」で引っかかっていました。
※こんなメッセージボックスをツールで出すことはないと思いますがチェック用のサンプルです。
3.VBAのエラー原因の特定
まず「Dir関数」ですが、パスをもとにファイル名の取得や、ファイルの有無をチェックする際にも使う場合があると思います。
ここでは「Dir関数」でエラーになってしまっていたので、パスがどうなっているか見てみました。
1 |
MsgBox "パス:" & ThisWorkbook.Path |
実行すると、以下のようにURLのようなパスが取得されました。
これまでは「C:\Users\●●」のような感じだったものがURLになっています。
Dir関数ではURLのチェックはできないので、ここでエラーとなります。
4.外部要因の特定
昨日まで動いていたものが動かなくなる場合、だいたい外部的な要因(WindowsUpdate、Officeのアップグレード、取り込んでいるデータに変なデータが入ってきた)などが考えられます。
今回はパスがURLになってしまったので、OneDriveがらみだということが分かりました。
前日にWindowsアップデートやOfficeのアップグレードを行っていたので、その際にOneDriveの設定も変わってしまったようでした。
5.対応と解決
今回の問題は、以下のようにOneDriveの設定を変更することで解決しました。
OneDriveの設定変更以外の方法は最後の「6.OneDriveの設定変更以外の方法」をご覧ください。
設定手順
OneDriveの「設定ボタン」→「同期とバックアップ」→「詳細設定」をクリック→「ファイルのコラボレーション」→「オフ」にする。
OneDriveの「設定ボタン」
「同期とバックアップ」→「詳細設定」をクリック
「ファイルのコラボレーション」→「オフ」
6.OneDriveの設定変更以外の方法
Dir関数で行っている内容によっては、「Split」関数など別の方法に切り替えれば対応できるものもあります。
ただ、そうなると対象箇所を探してすべて変更しないといけなくなり、ツールの数が多いと膨大な時間が必要になります。
(1)ファイル名を取得する場合(「Split」関数)