2020年08月14日

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が大好きだ!
タグ:VBA
posted by kzgadgets at 06:15| トラブル対応
当サイトでは、第三者配信の広告サービスを利用しています。このような広告配信事業者は、ユーザーの興味に応じた商品やサービスの広告を表示するため、当サイト及び他サイトへのアクセスに関する情報 【Cookie】を使用することがあります。この情報には、氏名、住所、メール アドレス、電話番号は含まれません。
QRコード
検索
最新記事
タグクラウド
カテゴリーアーカイブ
プロフィール
さんの画像

中1のときにMS-DOS上のソフトで高速ブラインドタッチを習得してからというもの、パソコンの前にいる時間は多いです。
プロフィール
リンク集