VBA Environ関数でOneDriveのローカルパスを取得する

EXCEL

自分のPCでFileSystemObjectを使うと、OneDriveが原因でファイルパスが「https://~」となってマクロが動かない。OneDriveのローカルパスを取得し置換すればよさそうなので、ここでは、VBAでローカルパスを取得する方法をメモ

置換は、別途考えよう。

環境変数の確認

Get-ChildItem env: を使うと、OneDrive もしくは OneDriveConsumer でローカルパスが設定されていることがわかる

PS C:\Users\papanda925> Get-ChildItem env:

Name                           Value
----                           -----
ALLUSERSPROFILE                X:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
APPDATA                        X:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CommonProgramFiles             X:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

~~~~

OneDrive                       C:\Users\papanda925\OneDrive
OneDriveConsumer               C:\Users\papanda925\OneDrive

~~~~

OnlineServices                 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
OS                             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

~~~~

PS C:\Users\papanda925>

VBAのEnviron関数でOneDriveのローカルパスを取得

Environ関数は、オペレーティング システムの環境変数に関連付けられた String を返してくれる。

今回の場合、OneDrive もしくは OneDriveConsumer を指定すると取得できそう。

以下、簡単なサンプルコード

Sub TestOneDriveLocalPath()

    Debug.Print Environ("OneDrive")
    Debug.Print Environ("OneDriveConsumer")

End Sub

実行すると、イミディエイトウィンドウに以下が出力され、ローカルパスを取得できる

C:\Users\papanda925\OneDrive
C:\Users\papanda925\OneDrive

Environ 関数 (Visual Basic for Applications) | Microsoft Learn

ライセンス:本記事のテキスト/コードは特記なき限り CC BY 4.0 です。引用の際は出典URL(本ページ)を明記してください。
利用ポリシー もご参照ください。

コメント

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