はじめに
今回は、特殊フォルダのパスを取得する方法について解説します。
「デスクトップ」や「マイドキュメント」など、Windowsには標準で作成されているフォルダがあり、端末や環境によりパスが異なります。
これらのパスを取得する方法について、具体的に解説します。
この記事を読むメリット
- 特殊フォルダ(デスクトップやマイドキュメントなど)のパスの取得方法が分かります。
- コピペで使える実践的なサンプルコードを掲載します。
前提
特殊フォルダとは
Windowsに標準で作成されているフォルダのことです。
「デスクトップ」や「ドキュメント」などが対象となります。
これらは、端末やログインユーザによってパスが異なるため、本記事で紹介する「SpecialFolder」プロパティで取得するのをお勧めします。
基本情報
SpecialFoldersプロパティ
「デスクトップ」や「ドキュメント」などの特殊フォルダのパスを取得するには、WSHShellオブジェクトのSpecialFoldersプロパティを使用します。
構文
構文を以下に示します。引数のキーワードは、取得したいフォルダ毎に決まったキーワードを指定します。
構文
WSHShellオブジェクト.SpecialFolders(キーワード)
キーワード
# | キーワード | 特殊フォルダ |
---|---|---|
1 | AllUsersDesktop | ユーザ共通のデスクトップ |
2 | AllUsersStartMenu | ユーザ共通のスタートメニュー |
3 | AllUsersPrograms | ユーザ共通のプログラムメニュー |
4 | AllUsersStartup | ユーザ共通のスタートアップ |
5 | Desktop | ログインユーザのデスクトップ |
6 | Favorites | ログインユーザのお気に入り |
7 | MyDocuments | ログインユーザのドキュメント |
8 | AppData | ログインユーザのアプリ用フォルダ |
9 | NetHood | ログインユーザの共有フォルダー履歴 |
10 | PrintHood | ログインユーザのプリンタ |
11 | Programs | ログインユーザのプログラムメニュー |
12 | Recent | ログインユーザの最近使った項目 |
13 | SendTo | ログインユーザの送る |
14 | StartMenu | ログインユーザのスタートメニュー |
15 | Startup | ログインユーザのスタートアップ |
16 | Templates | ログインユーザのテンプレート |
17 | Fonts | フォント |
りゅう
「ダウンロード」や「ピクチャ」などは取得できませんが、基本的には「デスクトップ」と同様のフォルダに存在します。
サンプルコード
特殊フォルダのパスを取得する
サンプルコード
Public Sub getSpecialFolderPath()
Dim myWSHShell As Object ' WSHShellオブジェクト
' WSHShellオブジェクトを生成
Set myWSHShell = CreateObject("WScript.Shell")
Range("C2").Value = myWSHShell.SpecialFolders("AllUsersDesktop")
Range("C3").Value = myWSHShell.SpecialFolders("AllUsersStartMenu")
Range("C4").Value = myWSHShell.SpecialFolders("AllUsersPrograms")
Range("C5").Value = myWSHShell.SpecialFolders("AllUsersStartup")
Range("C6").Value = myWSHShell.SpecialFolders("Desktop")
Range("C7").Value = myWSHShell.SpecialFolders("Favorites")
Range("C8").Value = myWSHShell.SpecialFolders("MyDocuments")
Range("C9").Value = myWSHShell.SpecialFolders("AppData")
Range("C10").Value = myWSHShell.SpecialFolders("NetHood")
Range("C11").Value = myWSHShell.SpecialFolders("PrintHood")
Range("C12").Value = myWSHShell.SpecialFolders("Programs")
Range("C13").Value = myWSHShell.SpecialFolders("Recent")
Range("C14").Value = myWSHShell.SpecialFolders("SendTo")
Range("C15").Value = myWSHShell.SpecialFolders("StartMenu")
Range("C16").Value = myWSHShell.SpecialFolders("Startup")
Range("C17").Value = myWSHShell.SpecialFolders("Templates")
Range("C18").Value = myWSHShell.SpecialFolders("Fonts")
End Sub
実行結果 (クリックで拡大します)
マイドキュメントにファイルを保存する
サンプルコード
Public Sub saveDesktop()
Dim myWSHShell As Object ' WSHShellオブジェクト
Dim documentPath As String ' MyDocumentパス
' WSHShellオブジェクトを生成
Set myWSHShell = CreateObject("WScript.Shell")
' マイドキュメントのパスを取得
documentPath = myWSHShell.SpecialFolders("MyDocuments")
' Book1をマイドキュメントに保存する
Workbooks("Book1").SaveAs documentPath & "\" & "Book1.xlsx"
End Sub
最後に
今回は、特殊フォルダのパスを取得する方法について解説しました。
本記事が、皆さんのお力になれば幸いです!
コメント