LoginSignup
13
13

More than 3 years have passed since last update.

【ThisWorkbook.Pathだとダメ】OneDriveで同期しているファイルのローカルパス取得方法【VBA】

Posted at

通常、ThisWorkbook.Pathを使えば自分自身の格納ディレクトリのパスを取得できますが、OneDriveで同期しているファイルの場合、OneDrive上のURLが返却されます。

(例:)
https://アカウント名-my.sharepoint.com/personal/・・・

※パスは、法人向け(OneDrive for Business)か個人向けかでドメイン部分が異なるようです

調べてみた結果、以下サイトで公開している関数が一番スマートな対処法でした。

[VBA]OneDriveで同期しているファイルまたはフォルダのURLをローカルパスに変換する関数 | 黒い箱の中

ポイントは以下の3点。

  • 環境変数を取得するVBAのEnviron関数を使って、OneDriveのローカルパスを取得
  • URLは法人向けと個人向けがあるのでそれぞれURLのパターンで判別
  • URLの後半("/Documents")以降は、OneDrive内のフォルダ階層をURLで表現しているので、"/Documents"以降を抜き出しつつ"/"を"\"に変換して連結
13
13
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13