[ VBA ] 環境変数の取得・設定・削除 ( Environ 関数 )

Pocket

ここでは、Environ 関数を使用して VBA から環境変数を取得および設定を行うVBAサンプルスクリプトを掲載しています。

スポンサーリンク

すべての環境変数を取得する

    Dim idx, envString
     
    idx = 1    ' インデックスは1から始まる

    Do
        envString = Environ(idx)  ' 環境変数の取得

        idx = idx + 1    ' 次の環境変数を取得する

        ' 取得結果を出力
        Debug.Print envString
        
    Loop Until envString = ""  ' 環境変数が取得できなくなるまで

    ' --------------------------------------
    ' 出力結果例(抜粋して掲載している)
    ' --------------------------------------
    ' ALLUSERSPROFILE=C:\ProgramData
    ' APPDATA=C:\Users\masao\AppData\Roaming
    ' CommonProgramFiles=C:\Program Files\Common Files
    ' COMPUTERNAME=masao-PC
    ' ComSpec=C:\Windows\system32\cmd.exe
    ' OS=Windows_NT
    ' Path=C:\Program Files\Microsoft Office\Office14\;C:\Program Files\Common Files\Microsoft Shared\Windows Live
    ' PROCESSOR_ARCHITECTURE=x86
    ' ProgramData=C:\ProgramData
    ' windir=C:\Windows

環境変数名を指定して取得する

Environ 関数はインデックスだけではなく、環境変数名を指定して特定の設定値のみを取得することもできます。

    ' 環境変数名を指定して取得するとその値のみが取得される
    ' なお、大文字と小文字の区別はない
    Debug.Print Environ("WINDIR")
    Debug.Print Environ("windir")
    
    ' --------------------------------------
    ' 出力結果例
    ' --------------------------------------
    ' C:\Windows
    ' C:\Windows
参考

環境変数を設定・削除する

次に環境変数の設定および削除を行うサンプルスクリプトです。ここでは、WScript.Shell を使用して設定を行っています。VBA の機能だけで簡単に設定するということは出来なさそうでした(調べが足りないだけかもしれないですが)。

    Dim wshShell, wshUserEnv ' 変数宣言
 
    Set wshShell = CreateObject("WScript.Shell")
    ' ユーザー環境変数の取得(システム環境変数の場合は System)
    Set wshUserEnv = wshShell.Environment("User")

    ' ユーザー環境変数 TESTUSERENV を設定する
    wshUserEnv.Item("TESTUSERENV") = "C:\test"

    ' 環境変数を削除する場合はコメントアウト
    'wshUserEnv.Remove ("TESTUSERENV")
    
    Set wshUserEnv = Nothing
    Set wshShell = Nothing
    

なお、設定した環境変数はエクセルを閉じてもそのまま残ります。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *