VBA:OneDriveをインストール・アップデート後にVBAがエラーになる場合の対応方法(原因:パスがURLになるため)


  • WindowsUpdateをしたらVBAが動作しなくなった
  • OneDriveを入れたらVBAでエラーが出るようになった
  • 昨日まで動いていたツールが動かなくなった
 業務で使われるツールでは、このような感じで突然問い合わせが来ることが多々あります。
 原因は様々なのですが、ここではOneDriveに関連したトラブルの原因と解消方法を説明します。

1.問い合わせ内容

「昨日まで動いていたツールが以下のようにエラーとなり動かなくなった。」という問い合わせがきます。

2.状況確認

 この画面だけだと何が原因か分からないので「デバッグ」を押してどこで引っかかってるか見てみます。
 今回の例では、デバッグを押してみると「Dir関数」で引っかかっていました。
 ※こんなメッセージボックスをツールで出すことはないと思いますがチェック用のサンプルです。



3.VBAのエラー原因の特定

 まず「Dir関数」ですが、パスをもとにファイル名の取得や、ファイルの有無をチェックする際にも使う場合があると思います。
 ここでは「Dir関数」でエラーになってしまっていたので、パスがどうなっているか見てみました。

 実行すると、以下のように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」関数)

VBA:パスから最後のフォルダ名・ファイル名を取得する方法

【VBA】パスから最後のフォルダ名・ファイル名を取得する方法




おすすめ