開発ブログ

雑多に書きます

OneDrive にファイルを置くと正しく動かなくなる問題

「あ…ありのまま 今 起こったことを話すぜ!」(・・・以下略)
ExcelファイルをOneDrive上のディレクトリ内に置くとマクロ実行で以下のエラー(8007007B)が出るようになりました。

このエラーはある1名のスタッフのみで発生していて最初はどういう条件で起きるのかさっぱり分かりませんでした。 後からそのスタッフだけExcelファイルをOneDrive上に置いていることがわかり、エラーの特定になりましたが、 ほんと、何でそんな事でエラーが起きるのか・・・。

調べてみると VBAマクロの以下の部分に問題がありました。

    ' カレントディレクトリを実行ファイルのあるパスにする
    CreateObject("WScript.Shell").CurrentDirectory = ThisWorkbook.Path

ThisWorkbook.Pathの値が通常は置かれているファイルパスになりますが、ExcelファイルをOneDrive上に置くと、https://d.docs.live.net/〇〇〇〇〇〇 とOneDriveサーバー上のURLを指している為に上記のエラーが出ていました。実際にファイルの置かれていいるローカルPC上のパス情報は ThisWorkbook からは取れません・・・・。

そもそも OneDriveサーバー上のファイルからはマクロが動かない癖に、 何でそんな仕様になっているんだよ!

取りあえず httpを判定して回避

    If Left(ThisWorkbook.Path, 4) <> "http" Then CreateObject("WScript.Shell").CurrentDirectory = ThisWorkbook.Path