【EXCEL VBA】デスクトップのパスを取得したい

パソコンの使用者毎に「デスクトップ」や「ドキュメント」などのフォルダは異なります。これら特殊フォルダのパスを取得する方法について紹介します。

WshShellクラスのSpecialFoldersで解決する

WshShellクラスのSpecialFoldersを利用することで特殊フォルダのパスを取得することができます。SpecialFoldersに指定する引数の一部と説明を以下に示します。

文字列内容
Desktopログインユーザーのデスクトップ
MyDocumentsログインユーザーのドキュメント
Favoritesログインユーザーのお気に入り
Fontsフォント
Programsログインユーザーのプログラムメニュー
Recentログインユーザーの最近使ったファイル
SendToログインユーザーの送る
StartMenuログインユーザーのスタートメニュー
Startupログインユーザーのスタートアップ
Templatesログインユーザーの新規作成のテンプレート

SpecialFoldersの引数一覧は公式を参照してください。

サンプルプログラム

サンプルプログラムを動かすには参照設定が必要です。「Windows Script Host Object Model」を事前に選択しておいてください。

Option Explicit

Sub sample()
    Dim sh As New IWshRuntimeLibrary.WshShell
    
    Debug.Print "Desktop = " & sh.SpecialFolders("Desktop")
    Debug.Print "MyDocuments = " & sh.SpecialFolders("MyDocuments")
    Debug.Print "Favorites = " & sh.SpecialFolders("Favorites")
    Debug.Print "Fonts = " & sh.SpecialFolders("Fonts")
    Debug.Print "Programs = " & sh.SpecialFolders("Programs")
    Debug.Print "Recent = " & sh.SpecialFolders("Recent")
    Debug.Print "SendTo = " & sh.SpecialFolders("SendTo")
    Debug.Print "StartMenu = " & sh.SpecialFolders("StartMenu")
    Debug.Print "Startup = " & sh.SpecialFolders("Startup")
    Debug.Print "Templates = " & sh.SpecialFolders("Templates")

End Sub