Excel ファイルの VBA が OneDrive 同期対象のローカルフォルダー上だとうまく動かないことがある

トラブル対応
概要

Excel ファイルの VBA が OneDrive 同期対象のローカルフォルダーにあると、それがうまく動かないことがある。色々調べてみたところ、原因は ThisWorkbook プロパティにある模様。このプロパティが自分自身のファイルのパスを返すときの値が、URL 形式になっていた。
これを解決するために、OneDrive の設定画面にて「Office アプリケーションを使用して、開いている Office ファイルを同期する」を無効にした。すると、問題のThisWorkBook プロパティがローカルフォルダーの値を返すようになり、それを含むVBA がうまく動くようになった。

詳細

困ったこと

Excel ファイルの VBA が OneDrive 同期対象のローカルフォルダーにあると、それがうまく動かないことがある。しかし同ファイルを OneDrive 同期の対象としていないフォルダーに移してから実行すると、うまくいくようになる。しかし本当ならOneDrive 同期対象のフォルダーに置いたまま、この VBA を実行したい。
その VBA を実行しようとしたときにでるエラー

2020-08-14.png

(実行時エラー ’52’: ファイル名または番号が不正です。)

イミディエイトウィンドウにて ThisWorkbook プロパティが返す値

?ThisWorkbook.Path
https://d.docs.live.net/(略)/ドキュメント/(以下略)

環境

  • OS: Windows 10 Rro バージョン1909
  • MS Excel: Microsoft Excel for Microsoft 365 MSO (16.0.13029.202329) 64 ビット

原因/やったこと

このプロパティが自分自身のファイルのパスを返すときの値がURL 形式になっているために、うまくいかなかった模様。

これを解決するために、OneDrive の設定画面を開いて、[Office] タブの「Office アプリケーションを使用して、開いている Office ファイルを同期する」を無効にした。

2020-08-14 (1).png

そのExcel ファイルを開いていた場合、いったん Excel を再起動する。

結果

元のOneDrive 同期対象のフォルダーに置いたままこの VBA を実行しても、エラーが出ずにうまく実行できるようになった。

このときイミディエイトウィンドウにてThisWorkbook プロパティが返す値:

?ThisWorkbook.Path
C:Users(略)OneDriveドキュメント(以下略)

備考

OneDrive の設定画面で「Office アプリケーションを使用して、開いている Office ファイルを同期する」設定をオフにすると、MS Office のファイルを他のユーザーと同時に作業するという場合には、当然ながら弊害が出る模様。

参考にさせていただいたウェブページ

Thisworkbook.PathがURLを返すようになった時の対応 – Excelが大好きだ!

タイトルとURLをコピーしました