VBAでデスクトップなど特定のフォルダを指定するには

VBAでファイルの入出力をデスクトップのフォルダに対してする場合,ユーザー名を含んだパスをどう取るんだっけ…と「vba デスクトップ パス」などで検索して上位に出てくる記事で確認しました。が,Windows XP時代の古い情報もあったので,ここで整理しておきたいと思います。

基本的なコード

一番上に出てきたmougの記事を参考にすると以下のように。もちろんセオリーはこの通りですが,Windows Scripting Hostオブジェクトを変数にセットして,使用後,最後に解放する,という手間を踏んでいます。

1行で

2番目に出てきたブログの記事を参考すると,次のように。WSHを1回しか使わないのであれば,わざわざオブジェクトを用意しなくても,使い捨てでこのように1行で書いてしまえば良いと思います。

いろいろなSpecialFolders

上記のブログ記事には,デスクトップ以外のいろいろなSpecialFoldersの一覧が載っていましたが,Windows XP時代の情報でした。

Windows 7では以下のようになります。

SpecialFolders.Item( )の引き数には,上記の文字列のほか,0~17の番号でも良いようです。ちなみに4と10は”Desktop”で重複しているようです。

SpecialFoldersをチェック

これらを確認するため,以下のサンプルマクロで確認しました。イミディエイトウィンドウにそれぞれのパスが表示されます。

関連記事