Environメソッドというものがある

Environメソッドというものがある

Wordの〝標準テンプレート〟ファイル(Normal.dotm)を、VBAでゴニョゴニョしたい、ということがあったとする。

その場合、当然ながら標準テンプレートファイルのあるディレクトリのパスを取得する必要がある。

自分一人しか使わないマクロだったら、単純にパスをジカ打ちすりゃいい。

たとえば、私の環境なら、

C:\Users\admin\AppData\Roaming\Microsoft\Templates

これでいい。

問題は、いろいろな端末で使い回すマクロの場合である。

何せ、上記のパスのうち、「admin」の部分は、ユーザによって異なるからである!

環境変数を使おう!

そういうときは、〝環境変数〟の出番ですよ!

たとえば、上記パスのうち、

C:\Users\admin\AppData\Roaming

の部分は、環境変数 %AppData% に格納されている。

だから、エクスプローラーのアドレス バーに

%AppData%\\Microsoft\Templates

と打ち込んで、

[Enter]を押してやれば、

ほれ。この通り、無事にTemplatesフォルダに移動できる。

環境変数をそのままVBAに渡してもダメ

ただし、環境変数をそのままVBAに渡しても、VBAはそれをパスとして解読してはくれない。

こうなる。

Environメソッドを使う

環境変数に格納された値を取得するには、VBA.InteractionクラスのEnvironメソッドを用いれば良いのである。(参考

このように、

C:\Users\admin\AppData\Roaming

という文字列を取得できるのである。

この通り、無事にTemplatesフォルダのパスが取得できた。

おわりに

職場で使い回すようなマクロを作るときは、〝環境変数〟というものを意識するのもいいかもしれませんね。

参考

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典