本ページには広告が含まれています。

VBA Environ関数 OS環境変数の値を取得します

VBA Environ関数 OSの環境変数の値を取得します

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ホームディレクトリのドライブ
SystemRootWindowsのインストール先ディレクトリ
ProgramFiles「Program Files」フォルダのパス
PUBLIC「Public」ユーザーフォルダのパス

状況に応じて、この表を参考に環境変数名を指定すればPCの環境変数を取得できます。

戻り値

環境変数の内容を文字列(String)で返します。

例えば環境変数が『 USERNAME=kurumico 』のように登録されている場合、引数の指定方法によって次のような戻り値の違いがある点に注意が必要です。

  • 引数を envstring 環境変数名で指定した場合の戻り値
    • kurumico
  • 引数を number で指定した場合の戻り値
    • 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画像のとおりです。

Environ("USERNAME")の結果
Environ("TEMP")の結果

数値指定で環境変数を取得する例

次の例は、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
OSに登録されている環境変数をすべて表示させてみたイミディエイト
※ クリックで画像を拡大表示できます。

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 の Environ 関数は、OS (Windows) に設定されている環境変数を取得したい場合に利用されます。

  • 引数には環境変数名を文字列で指定するのが一般的です
  • よく使う環境変数名は「USERNAME」「TEMP」「HOMEPATH」 などです
  • ユーザーごとの処理分岐やログ保存などの際に利用すると便利です
  • 環境依存やセキュリティ面に注意する必要があります

Environ関数を活用することで、より柔軟なVBAマクロを作成できます。ちょっとした工夫で実用的な処理を実現できるので、ぜひ試してみてください。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

スポンサーリンク
スポンサーリンク

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!