まりふのひと

VBAでマイドキュメントやデスクトップ等の特殊フォルダーを取得する

特殊フォルダを取得するExcel VBA を学ぶなら moug モーグ | 即効テクニック)

 次のコードは、[ファイルを開く]ダイアログボックスで「マイドキュメント」フォルダを開きます。

Sub Sample4()
    Dim Path As String, WSH As Variant, OpenFileName As String
    Set WSH = CreateObject("Wscript.Shell")
    Path = WSH.SpecialFolders("MyDocuments") & "\"
    ChDir Path
    OpenFileName = Application.GetOpenFilename("Excelブック,*.xls")
    If OpenFileName <> "False" Then
        Workbooks.Open OpenFileName
    End If
    Set WSH = Nothing
End Sub

WSHのSpecialFoldersプロパティでは、次のようなフォルダを取得できます。

フォルダ 引数
すべてのユーザーに共通のデスクトップ AllUsersDesktop
すべてのユーザーに共通のプログラムメニュー AllUsersPrograms
すべてのユーザーに共通のスタートアップ AllUsersStartup
ログインユーザーのデスクトップ Desktop
ログインユーザーのプログラムメニュー Programs
ログインユーザーのスタートアップ Startup
お気に入り Favorites
フォント Fonts
マイドキュメント MyDocuments
最近使ったファイル Recent
送る SendTo
スタートメニュー StartMenu
新規作成のテンプレート Templates
アプリ用のデータ AppData


WindowsXP ではマイドキュメントの下にマイピクチャがあったが、Windows7 では独立したフォルダになっている。
上表にマイピクチャが無いので、“MyPicture”, “Picture” で試してみたが得られなかった。
マイクロソフトmsdn|SpecialFolders プロパティ も探したが、見つけられなかった。個人用フォルダーが指定できるといいのだが...