Environ 関数で環境変数を取得する方法
今回の目標
Environ関数で、環境変数の値を取得する方法を解説します。
目標リスト
- 環境変数の値を取得できるようになる
- 環境変数の一覧を取得できるようになる
Environ関数について
Environ関数とは
Environ関数は、引数に指定項目名を設定すると環境変数を取得できます。
環境変数とは、OS やアプリが参照する「ユーザーごと・PC ごとに異なる設定値」のことです。
例えば、PCのユーザー名がこれにあたります。
また、Environ関数では、引数に数値を設定すると対応した環境変数の指定項目名とその設定値が取得できますが、数値はPCにより異なるため扱いには注意が必要です。
Environ関数の引数について
Environ (envstring | number)
※ 「 | 」は、『もしくは』の意味です。
Environ関数の引数一覧です。
| 指定項目 | 省略 | 説明 |
|---|---|---|
| envstring | 可能 ※ | 環境変数の名前を含む文字列 |
| number | 可能 ※ | 環境文字列テーブル内の環境文字列の順番に対応する数値 |
Environ関数の戻り値の例
Environ関数の引数 envstring に送る文字列と戻り値の一覧です。
50以上の種類がありますが、ここでは使用頻度が高い引数を紹介します。
| 引数 | 説明 |
|---|---|
| TEMP | 一時ファイル用フォルダのパス |
| USERPROFILE | ユーザーのプロファイルフォルダ |
| HOMEDRIVE | ユーザーのホームドライブ |
| HOMEPATH | ホームフォルダまでのパス |
| USERNAME | ログインユーザー名 |
| COMPUTERNAME | コンピューター名 |
| PROGRAMFILES | Program Files フォルダのパス |
| WINDIR | Windows フォルダのパス |
| APPDATA | Roaming 用のアプリデータフォルダ |
| LOCALAPPDATA | ローカル(PC 固有)なアプリのデータフォルダ |
※一部、Microsoft社のリファレンスを参照しています。
【Microsoft公式】
Environ 関数
TEMPフォルダやユーザー名などを取得する
Environ関数の引数に"TEMP"と指定するとTEMP(一時ファイル用)フォルダのパスを、"USERNAME"と指定するとユーザー名を取得できます。
下のサンプルでは、使用頻度が高い環境変数をイミディエイトウィンドウに表示します。
サンプルコード
Sub SampleEnviron1()
Debug.Print "TEMP → " & Environ("TEMP")
Debug.Print "USERPROFILE → " & Environ("USERPROFILE")
Debug.Print "HOMEDRIVE → " & Environ("HOMEDRIVE")
Debug.Print "HOMEPATH → " & Environ("HOMEPATH")
Debug.Print "USERNAME → " & Environ("USERNAME")
Debug.Print "COMPUTERNAME → " & Environ("COMPUTERNAME")
Debug.Print "PROGRAMFILES → " & Environ("PROGRAMFILES")
Debug.Print "WINDIR → " & Environ("WINDIR")
Debug.Print "APPDATA → " & Environ("APPDATA")
Debug.Print "LOCALAPPDATA → " & Environ("LOCALAPPDATA")
End Sub
※下記の実行例は筆者の環境です。ユーザーにより変わる可能性があります。
TEMP → C:¥Users¥(UserName)¥AppData¥Local¥Temp
USERPROFILE → C:¥Users¥(UserName)
HOMEDRIVE → C:
HOMEPATH → ¥Users¥(UserName)
USERNAME → (UserName)
COMPUTERNAME → DESKTOP-xxxxxx
PROGRAMFILES → C:¥Program Files
WINDIR → C:¥WINDOWS
APPDATA → C:¥Users¥(UserName)¥AppData¥Roaming
LOCALAPPDATA → C:¥Users¥(UserName)¥AppData¥Local
環境変数を一覧表示する
Environ関数の引数に数値を指定すると対応した環境変数の項目名とその値を取得できます。
戻り値は「環境変数の項目名=環境変数の値」の形式です。
下のサンプルでは、For文で Environ関数に数値を入れ、環境変数の一覧をイミディエイトウィンドウに表示します。
サンプルコード
Sub SampleEnviron2()
Dim i As Long
Dim s As String
' 1から順に取得し、ブランクなら終了(途中で抜ける前提)
For i = 1 To 512
s = Environ(i)
If s = "" Then
Exit For
End If
Debug.Print i & " → " & s
Next i
End Sub
※下記の実行例は筆者の環境です。ユーザーにより変わる可能性があります。
1 → ALLUSERSPROFILE=C:\ProgramData
2 → APPDATA=C:\Users\(UserName)\AppData\Roaming
3 → CommonProgramFiles=C:\Program Files\Common Files
(以降、続きます)
