自分のPCでFileSystemObjectを使うと、OneDriveが原因でファイルパスが「https://~」となってマクロが動かない。OneDriveのローカルパスを取得し置換すればよさそうなので、ここでは、VBAでローカルパスを取得する方法をメモ
置換は、別途考えよう。
環境変数の確認
Get-ChildItem env: を使うと、OneDrive もしくは OneDriveConsumer でローカルパスが設定されていることがわかる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
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 を指定すると取得できそう。
以下、簡単なサンプルコード
1 2 3 4 5 6 |
Sub TestOneDriveLocalPath() Debug.Print Environ("OneDrive") Debug.Print Environ("OneDriveConsumer") End Sub |
実行すると、イミディエイトウィンドウに以下が出力され、ローカルパスを取得できる
1 2 |
C:\Users\papanda925\OneDrive C:\Users\papanda925\OneDrive |
Environ 関数 (Visual Basic for Applications) | Microsoft Learn
コメント