VBA共通:Access、ExcelのVBAでWindowsの環境変数を取得するサンプルプログラム

VBA共通:Access、ExcelのVBAでWindowsの環境変数を取得するサンプルプログラム

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
  

コメント

タイトルとURLをコピーしました