Excel VBAの「Environ 関数」について解説します。
Environ 関数とは
Excel VBA の Environ 関数は、OS(Windows)の環境変数を取得するための関数です。指定した環境変数の値を文字列(String)として返します。
Excel VBAを使っていると、ユーザー名や一時ファイル用のフォルダ(TEMPフォルダ)など、Windowsの環境に依存した情報を使いたい場面があります。そんなときに役立つ関数です。
例えば「ログインユーザー名」「コンピューター名」「TEMPフォルダのパス」などを簡単に取得できます。
Environ 関数の構文や実際の使い方や注意点について具体的に解説していきたいと思います。
Environ 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
Environ({envstring | number})
※ {envstring | number} の部分は、どちらか一方を指定するという意味です。
引数
指定項目 | 説明 |
---|---|
envstring | 【省略可能】環境変数名を文字列で指定します |
number | 【省略可能】環境変数の順序を示す数値を指定します |
- 引数 envstring と 引数 number は、どちらか一方を必ず指定します。
- 【省略可能】と記載しているのは、指定しない引数は省略可能ということです。
- 引数の指定は「大文字」と「小文字」を区別しません。
- 環境変数の登録はアルファベット順位なっているようです。
【VBAでよく使う】環境変数一覧
以下は、VBAでよく利用される環境変数名とその説明の一覧です。
環境変数名 | 説明 |
---|---|
USERNAME | ログインしているユーザー名 |
COMPUTERNAME | コンピューター名 |
USERDOMAIN | ユーザーの所属ドメイン名 |
TEMP / TMP | 一時ファイル保存用フォルダのパス |
APPDATA | アプリケーションデータの保存フォルダ |
HOMEPATH | ユーザーのホームディレクトリパス |
HOMEDRIVE | ホームディレクトリのドライブ |
SystemRoot | Windowsのインストール先ディレクトリ |
ProgramFiles | 「Program Files」フォルダのパス |
PUBLIC | 「Public」ユーザーフォルダのパス |
状況に応じて、この表を参考に環境変数名を指定すればPCの環境変数を取得できます。
戻り値
環境変数の内容を文字列(String)で返します。
例えば環境変数が『 USERNAME=kurumico 』のように登録されている場合、引数の指定方法によって次のような戻り値の違いがある点に注意が必要です。
- 引数を envstring 環境変数名で指定した場合の戻り値
- kurumico
- 引数を number で指定した場合の戻り値
- USERNAME=kurumico
※環境変数は、= 以降の文字列を取り出す必要があります。
- USERNAME=kurumico
解説(使用例)
Environ 関数の基本的な使い方
環境変数名で指定する例
次の例は「ユーザー名」と「TEMPフォルダのパス」を取得して MsgBox に表示します。
'■Environ関数サンプル1(基本的な使用例)
Sub Environ_Sample_01()
Dim str As String
'ユーザー名を取得する
str = Environ("USERNAME")
MsgBox str, , "USERNAME="
'TEMPフォルダのパスを取得する
str = Environ("TEMP")
MsgBox str, , "TEMP="
End Sub
実行して取得できた環境変数は、次の MsgBox画像のとおりです。


数値指定で環境変数を取得する例
次の例は、OSに登録されている環境変数をすべて取得してイミディエイトに表示します。
'■Environ関数サンプル2(数値で取得する例)
Sub Environ_Sample_02()
Dim number As Long
Dim str As String
Do
number = number + 1
str = Environ(number)
If str = "" Then Exit Do '戻り値なしで抜ける
Debug.Print number & ":" & str
Loop
End Sub

Environ(数値) で指定した場合の戻り値は、環境変数名=環境変数 のスタイルです。
環境変数の値だけが必要な場合は、前半の 環境変数名= は不要なので、= 以降だけを抜き出す処理が必要となります。
Environ 関数の実用的な使い方
Environ 関数の実用例です。取得した環境変数を使う方法の一例です。
ユーザー名と日時をログファイルに記録する例
指定フォルダのログファイルにユーザー名と日時を記録する例です。
'■Environ関数サンプル3(実用的な使い方例)
Sub Environ_Sample_03()
Dim username As String
Dim logpath As String
Dim fso As Object
Dim logfile As Object
username = Environ("USERNAME")
logpath = Environ("HOMEDRIVE") & "\UserLog\" '
'保存先フォルダがなければ作成する
If Dir(logpath, vbDirectory) = "" Then
MkDir logpath
End If
logpath = logpath & "log.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set logfile = fso.OpenTextFile(logpath, 8, True)
logfile.WriteLine "ログ記録: " & Now & " - ユーザー: " & username
logfile.Close
Set logfile = Nothing
Set fso = Nothing
End Sub
8行目:環境変数名「USERNAME」で「ユーザー名」を取得して変数に格納しています。
9行目:環境変数名「HOMEDRIVE」で「ドライブ名」を取得して、指定フォルダ名「\UseLog\」を追加したパスを変数に格納しています。
11~13行目:保存先の指定フォルダが存在していなかった場合は新たに作成する設定です。
16~23行目:ログファイルに現在日時(Now)とユーザー名を書き込む処理です。
これで、複数ユーザーが利用する場合でも、1つのログファイルに記録を残せるようになりました。
注意点
- 環境によって値が異なる
Windowsのバージョンや設定などによって環境変数の結果が変わることがあります。 - セキュリティリスク
ユーザー名やシステム情報を扱うため、利用シーンによっては取り扱いに注意が必要です。 - 代替手段
ユーザー名を取得できるApplication.UserName
などのプロパティもあるので、用途によって使い分けることもできます。
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
VBA の Environ 関数は、OS (Windows) に設定されている環境変数を取得したい場合に利用されます。
Environ関数を活用することで、より柔軟なVBAマクロを作成できます。ちょっとした工夫で実用的な処理を実現できるので、ぜひ試してみてください。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;幸いです(^^;