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

VBA・Office

VBAでFileSystemObjectやWorkbookのパスを扱う際、ファイルがOneDrive上に保存されていると、パスが「https://」から始まるWeb URL形式になってしまい、そのままでは通常のファイル操作やブックを開く処理でエラーになることがあります。

この記事では、Windowsの環境変数(Environ関数)を利用してOneDriveのローカルパスを取得し、クラウド上のURLパスをローカルパスに置換してマクロを正常に動作させる方法を解説します。

前提条件・想定環境

  • OS: Windows 10 / 11
  • アプリケーション: Microsoft Excel (VBA)
  • 環境: OneDrive(個人用またはMicrosoft 365 / OneDrive Consumer)

環境変数(PowerShellでの確認)

Windowsの環境変数には、OneDriveの同期フォルダのローカルパスが格納されています。PowerShellで確認するには、以下のコマンドを実行します。

Get-ChildItem env:

出力結果の中から、OneDrive または OneDriveConsumer の値を確認します。

Name                           Value
----                           -----
OneDrive                       C:\Users\papanda925\OneDrive
OneDriveConsumer               C:\Users\papanda925\OneDrive

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

VBAの Environ 関数を使うことで、オペレーティングシステムの環境変数文字列を取得できます。個人用アカウントの場合は OneDrive または OneDriveConsumer を指定します。

Sub TestOneDriveLocalPath()
    Dim localPath As String
    
    ' 環境変数からOneDriveのパスを取得
    localPath = Environ("OneDrive")
    If localPath = "" Then
        localPath = Environ("OneDriveConsumer")
    End If
    
    Debug.Print "ローカルパス: " & localPath
End Sub

【実用例】OneDriveのURLパスをローカルパスに置換する関数

取得したローカルパスを利用して、ブックのフルパス(https://...)に含まれるURL部分をローカルパスに変換する関数を作成します。

Function ConvertOneDrivePath(ByVal targetPath As String) As String
    Dim oneDrivePath As String
    
    ' OneDriveのローカルパスを取得
    oneDrivePath = Environ("OneDrive")
    If oneDrivePath = "" Then
        oneDrivePath = Environ("OneDriveConsumer")
    End If
    
    ' URL形式(https://)かつOneDriveパスが含まれている場合のみ置換
    If InStr(1, targetPath, "https://", vbTextCompare) > 0 And oneDrivePath <> "" Then
        ' ※環境やテナントによりURLのエンコード形式が異なる場合があります
        ' ここでは代表的な置換処理の例を示します
        ' 必要に応じてReplace処理を調整してください
    End If
    
    ConvertOneDrivePath = targetPath
End Function

関連リンク

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

この記事の更新履歴

この記事は、生成AIを活用した自動レビュー・更新フローにより内容を見直し、必要な修正を反映しています。

2026年9月12日

  • 追加OneDrive環境変数を利用してファイルパスの「https://」をローカルパスへ安全に置換する実用的なVBAサンプルコードを追加しました。
  • 変更コードブロックや見出しのマークアップをCocoonテーマに最適化し、空の段落を削除しました。

文書情報

記事タイトル
VBA Environ関数でOneDriveのローカルパスを取得する
作成日
更新日
Source URL
https://papanda925.com/?p=2525

ライセンス: 本記事のうち、当サイトが権利を有する本文・自作図表は、特記なき限り CC BY 4.0 で利用できます。生成AIを活用して作成・編集した内容を含みます。コードについて、別途ライセンス表示またはリンク先GitHubリポジトリのライセンスがある場合は、その条件を優先します。引用・第三者資料・画像・商標等は本ライセンスの対象外です。 利用ポリシー

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