Excel VBAで「ActiveWorkbook.Path」 「ThisWorkbook.Path」コードが利用できなくなった時の対処方法

今まで、「ActiveWorkbook.Path」または「ThisWorkbook.Path」コードを使用して、開いているExcelファイルがあるフォルダーのパスを取得していましたが、突然「実行時エラー’76’: パスが見つかりません。」というエラーが表示されるようになり機能しなくなりました。調べてみると、OneDriveの設定で「ファイルのコラボレーション」の項目がなくなっていることに気づきました。

左が以前の画面、右が現在の画面ですが、以前まであった「ファイルのコラボレーション」欄がなくなっています。

これまでは、この設定を「オフ」にすることで問題なく利用できていましたが、設定できなくなってしまったようです。この問題については、以前にも対処方法を記載しましたが、自作した「UrlToLocal」関数を使用することで解決できますので試してみてください。

対処方法

以下のように「UrlToLocal」関数を使ってパスの変換を行います。
 xPath = UrlToLocal(ActiveWorkbook.Path)
 または、
 xPath = UrlToLocal(ThisWorkbook.Path)

「UrlToLocal」関数のコードについては下記の通りです。

Public Function UrlToLocal(ByRef Url As String) As String

   'OneDrive環境変数を格納する変数の定義
    Dim OneDrive As String

   'OneDrive環境変数の取得
    OneDrive = Environ("OneDrive")

   '「https://・・・・・・・/Documents」までの文字数を格納する変数の定義
    Dim CharPosi As String

   ' URLからローカルパスを作成する
    If Url Like "https://*" Then 'OneDriveのパスかどうかの判定
           
      '「https://・・・・・・・/Documents」までの文字数を取得
      CharPosi = InStr(1, Url, "/Documents") + 10
      
      'ローカルパス作成
      Url = OneDrive & Replace(Mid(Url, CharPosi), "/", Application.PathSeparator)
    
    Else
    
      'OneDriveのパス以外だったらカレントドライブ指定
      ChDrive Left(Url, 1)
     
    End If

「UrlToLocal」関数の詳細につきましては、以前掲載した下記リンク先の記事を参照ください。
 https://scodebank.com/?p=696