更新日:、 作成日:
VBA Environ 関数:環境変数を取得する
はじめに
Excel VBA マクロの Environ 関数から環境変数を取得する方法を紹介します。
Environ 関数は、環境変数の値を取得します。
SystemRoot なら C:\Windows を返します。
Widnows の環境変数 (%SystemRoot% など) の値を取得したいときに使用します。
環境変数の一覧については「Windows 11 環境変数の確認と設定する」をご覧ください。
Environ 関数の引数と戻り値
Environ(環境変数)
環境変数の値を取得します。
引数「環境変数」 | % を付けないで環境変数の名前を指定します。 |
戻り値の型 | 文字列型 (String) |
解説
環境変数を取得できますが、設定はできません。
引数「環境変数」の環境変数が存在するとその値を返します。存在しないときは空文字 "" を返します。
引数「環境変数」の大文字と小文字は区別しません。
環境変数の「使用時の値」を取得します。
環境変数について
環境変数には「保存されている値」と「使用時の値」があります。
- 保存されている値:この値で保存されています。値に別の環境変数が入力されていることがあります。
例:%TEMP% = %SystemRoot%\TEMP - 使用時の値:値に別の環境変数が入力されているときは、それを展開した値です。この値がアプリで使用されます。
例:%TEMP% = C:\Windows\TEMP
優先度
環境変数には次の種類があります。
- システム:すべてのユーザーで共通して使用できます。レジストリに保存されています。
- ユーザー:そのユーザーのみ使用できます。レジストリに保存されています。
- プロセス:Windows が設定したものはすべてのアプリで使用できます。アプリが設定したものはそのアプリでのみ使用できます。それらの起動時に設定され、どこにも保存されていません。
それぞれの種類に同じ名前の環境変数があるときは プロセス > ユーザー > システム の順に優先度が高くなっています。プロセスにあればそれが使用され、他の種類の値は使用されません。
%Path% は特殊で優先度が逆になり システム;ユーザー のように両方が結合され、システムから先に参照されます。
スポンサーリンク
使用例
Environ 関数の使用例を紹介します。
環境変数を取得する
環境変数を取得します。
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) ' ""