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
フォルダのパスが取得できた。
おわりに
職場で使い回すようなマクロを作るときは、〝環境変数〟というものを意識するのもいいかもしれませんね。