VBAで環境変数の追加と編集を行うには

VBAで環境変数の追加や編集を行うにはWshShellオブジェクトを利用します。

なお、環境変数の一覧の取得方法については「VBAで環境変数の一覧を取得する」をご参照ください。

参照設定

WshShellはCreateObject関数を利用してこのような書き方を紹介されることが多いと思います。

しかしこの書き方では利用できるプロパティやメソッドを候補表示できません。しかし参照設定を行えばプロパティやメソッドを表示することが可能です。

WshShellの参照設定は、VBA画面→ツールメニュー→参照設定で「Windows Script Host Object Model」を選択します。これでWshShellクラスを利用できるようになります。

以下はWshShellクラスのインスタンス変数の作成サンプルです。書き方は2通りあります。どちらでもいいです。

1つ目のように1行で書いてもいいですし、2つ目のように変数定義とSetを別に書いてもいいです。

VBAでクラス変数の宣言とNewを1行で書いてよいか」にも書いていますが、作法としては2行目が推奨されていますが、私は1行で書くことが多いです。

以降のサンプルコードは参照設定を行った場合の書き方になります。

環境変数名の種類

WshShellクラスのEnvironmentプロパティに設定できる引数は以下の通りです。

一般的にはシステム環境変数の”System”への登録が多いとは思います。

文字列 内容
System システム環境変数。全ユーザーに適用される。
User ユーザー環境変数。ユーザーごとに設定する。
Volatile 揮発性環境変数。ログオフすると破棄される。
Process プロセス環境変数。現プロセスで利用可能な環境変数。

 

環境変数の編集のサンプルコード

1つ目と2つ目の関数が環境変数の追加および編集を行う関数です。違いは9行目と18行目の設定値で、既存値を保持するかしないかの違いしかありません。

ほとんど同じ処理なのでまとめてもいいのですが、説明しやすいようにわざと分けています。

どちらも3つの引数があり、引数1は上に挙げた4つの環境変数名のいずれか、引数2は設定する変数名、引数3は変数名に設定する値です。

3つ目の関数はテスト用の関数です。ここでの設定内容を見ると引数の設定が分かると思います。