VBAを使用してOS(Windows)の環境変数を取得するサンプルプログラムを覚書。
VBAでOSの環境変数を取得する場合は、Environ関数を使用すれば簡単に取得できる。
Access、Excelに共通した関数なのでどちらでも使用可能。
Environ関数について
VBAでWindowsの環境変数を取得するには、Environ関数を使用する。
Environ関数の使用例は以下のとおり。
Environ("環境変数名")
Environ関数を使用した簡単なサンプルプログラム
以下にEnviron関数を使用したログインしているユーザーのデスクトップのパスを取得してメッセージボックスに出力サンプルプログラムを記述。
Sub GetDeskTopPath()
Dim DeskTopPath As String
DeskTopPath = Environ("UserProfile") & "¥デスクトップ"
MsgBox DeskTopPath
End Sub
Environ関数の中で指定できる環境変数名の一覧
Environ関数の中で指定できる環境変数名の一覧を以下に記載する。
環境変数名 | 取得できる値の内容 |
---|---|
ALLUSERSPROFILE | All Usersのプロファイルパス |
APPDATA | アプリケーションデータフォルダ |
CommonProgramFiles | プログラムファイル用の共通ディレクトリ |
COMPUTERNAME | コンピュータ名 |
ComSpec | cmd.exe(コマンドプロンプト)のフルパス |
FP_NO_HOST_CHECK | Microsoft FrontPage用の環境変数、謎です… |
HOMEDRIVE | ホームドライブ |
HOMEPATH | ログインしているユーザーのホームディレクトリのパス |
LOGONSERVER | ログオンしているサーバの名前 |
NUMBER_OF_PROCESSORS | 使用しているPCのプロセッサー数 |
OS | オペレーティングシステムの名前 |
Path | 環境変数Pathに設定されているパスの一覧 |
PATHEXT | 拡張子なしで実行できるファイルの一覧 |
PROCESSOR_ARCHITECTURE | プロセッサーアーキテクチャ(X86とかAMDとか) |
PROCESSOR_IDENTIFIER | プロセッサーについての説明 |
PROCESSOR_LEVEL | プロセッサーのモデル番号 |
PROCESSOR_REVISION | プロセッサーのリビジョン番号 |
ProgramFiles | プログラムファイル用の共通ディレクトリ |
PROMPT | コマンドプロンプトに表示する文字列指定 |
SESSIONNAME | セッション名 |
SystemDrive | システムのドライブレター |
SystemRoot | システムのルートディレクトリ |
TEMP | アプリケーションのテンポラリーフォルダパス |
TMP | アプリケーションのテンポラリーフォルダパス |
USERDOMAIN | ログオンしているドメインの名前 |
USERNAME | ログオンしているユーザーの名前 |
USERPROFILE | ユーザプロファイル |
windir | Windows OSインストールディレクトリ |
取得できる環境変数をイミディエイトウィンドウに出力するサンプルプログラム
以下に上記の環境変数の値をイミディエイトウィンドウに表示するサンプルプログラムを奇祭する。
イミディエイトウィンドウは、Visual Basicエディタの[表示]メニューから[イミディエイトウィンドウ]をクリックすれば表示される。
Sub ShowEnvironment()
Debug.Print "AexRS=" & Environ("AexRS")
Debug.Print "ALLUSERSPROFILE=" & Environ("ALLUSERSPROFILE")
Debug.Print "APPDATA=" & Environ("APPDATA")
Debug.Print "CLIENTNAME=" & Environ("CLIENTNAME")
Debug.Print "CommonProgramFiles=" & Environ("CommonProgramFiles")
Debug.Print "COMPUTERNAME=" & Environ("COMPUTERNAME")
Debug.Print "ComSpec=" & Environ("ComSpec")
Debug.Print "FP_NO_HOST_CHECK=" & Environ("FP_NO_HOST_CHECK")
Debug.Print "HOMEDRIVE=" & Environ("HOMEDRIVE")
Debug.Print "HOMEPATH=" & Environ("HOMEPATH")
Debug.Print "LOGONSERVER=" & Environ("LOGONSERVER")
Debug.Print "NUMBER_OF_PROCESSORS=" & Environ("NUMBER_OF_PROCESSORS")
Debug.Print "OS=" & Environ("OS")
Debug.Print "Path=" & Environ("Path")
Debug.Print "PATHEXT=" & Environ("PATHEXT")
Debug.Print "PROCESSOR_ARCHITECTURE=" & Environ("PROCESSOR_ARCHITECTURE")
Debug.Print "PROCESSOR_IDENTIFIER=" & Environ("PROCESSOR_IDENTIFIER")
Debug.Print "PROCESSOR_LEVEL=" & Environ("PROCESSOR_LEVEL")
Debug.Print "PROCESSOR_REVISION=" & Environ("PROCESSOR_REVISION")
Debug.Print "ProgramFiles=" & Environ("ProgramFiles")
Debug.Print "PROMPT=" & Environ("PROMPT")
Debug.Print "SESSIONNAME=" & Environ("SESSIONNAME")
Debug.Print "SonicCentral=" & Environ("SonicCentral")
Debug.Print "SystemDrive=" & Environ("SystemDrive")
Debug.Print "SystemRoot=" & Environ("SystemRoot")
Debug.Print "TEMP=" & Environ("TEMP")
Debug.Print "TMP=" & Environ("TMP")
Debug.Print "USERDOMAIN=" & Environ("USERDOMAIN")
Debug.Print "USERNAME=" & Environ("USERNAME")
Debug.Print "USERPROFILE=" & Environ("USERPROFILE")
Debug.Print "VS80COMNTOOLS=" & Environ("VS80COMNTOOLS")
Debug.Print "windir=" & Environ("windir")
End Sub
コメント