VBA Environ 関数:環境変数を取得する

はじめに

Excel VBA マクロの Environ 関数から環境変数を取得する方法を紹介します。

Environ 関数は、環境変数の値を取得します。

SystemRoot なら C:\Windows を返します。

Widnows の環境変数 (%SystemRoot% など) の値を取得したいときに使用します。

環境変数の一覧については「Windows 11 環境変数の確認と設定する」をご覧ください。
  • 目次
    • Environ 関数
    • 解説
    • 使用例

Environ 関数

Environ(環境変数)
環境変数の値を取得します。

引数「環境変数」% を付けないで環境変数の名前を指定します。
戻り値の型文字列型 (String)

解説

環境変数を取得できますが、設定はできません。

引数「環境変数」の環境変数が存在するとその値を返します。存在しないときは空文字 "" を返します。

引数「環境変数」の大文字と小文字は区別しません。

環境変数の「使用時の値」を取得します。

環境変数について

環境変数には「保存されている値」と「使用時の値」があります。

  • 保存されている値:この値で保存されています。値に別の環境変数が入力されていることがあります。
    例:%TEMP% = %SystemRoot%\TEMP
  • 使用時の値:値に別の環境変数が入力されているときは、それを展開した値です。この値がアプリで使用されます。
    例:%TEMP% = C:\Windows\TEMP

優先度

環境変数には次の種類があります。

  • システム:すべてのユーザーで共通して使用できます。レジストリに保存されています。
  • ユーザー:そのユーザーのみ使用できます。レジストリに保存されています。
  • プロセス:Windows が設定したものはすべてのアプリで使用できます。アプリが設定したものはそのアプリでのみ使用できます。それらの起動時に設定され、どこにも保存されていません。

それぞれの種類に同じ名前の環境変数があるときは プロセス > ユーザー > システム の順に優先度が高くなっています。プロセスにあればそれが使用され、他の種類の値は使用されません。

%Path% は特殊で優先度が逆になり システム;ユーザー のように両方が結合され、システムから先に参照されます。

使用例

環境変数を取得する。

Dim s As String
s = Environ("SystemRoot")
Debug.Print(s) ' C:\Windows

s = Environ("Temp")
Debug.Print(s) ' C:\Users\ユーザー名\AppData\Local\Temp

s = Environ("Path")
Debug.Print(s) ' C:\Program Files (x86)\Microsoft Office …

s = Environ("Tips")
Debug.Print(s) ' ""