マイドキュメントフォルダやデスクトップフォルダなどログインユーザーによってパスが変わるフォルダやWindowsがセットアップ時に作成するSystemフォルダなどの特殊なフォルダのパスをVBAで取得するサンプルプログラムを覚書。
紹介するサンプルプログラムは、ExcelのVBAでもAccessのVBAでも使用できます。
Windowsの特殊フォルダのパスについて
Windowsの特殊フォルダのパスは、ログオンしているユーザーやWindowsをセットアップした際の指定によって異なります。
例えば、Windowsをインストールするフォルダをデフォルトから変更していた場合、"System32"フォルダのパスは、"C:\Windows\System32"ではなくなってしまいます。
またマイドキュメントやデスクトップフォルダは、ログオンしているユーザーによってパス文字列が変わってしまいます。
デスクトップフォルダであれば、"C:\Documents and Settings\ログオンユーザー名\デスクトップ"になるため、ログオンしているユーザー名がわからないと正確にパスを指定することができません。
その他テンポラリファイルを保存するフォルダなどは、Windowsの環境変数の指定によって決まったりもするので、固定した文字列を指定することはできません。
上記の特殊フォルダのパス文字列をVBAで取得するサンプルプログラムを紹介します。
特殊フォルダのパスを取得するサンプルプログラム概要
VBAでデスクトップフォルダやマイドキュメントなどの特殊フォルダのパスを取得するには、Windowsの"Windows Script Host"オブジェクトを使用します。
また、WindowsフォルダやSystem32フォルダ、テンポラリフォルダ等については、"FileSystemObject"オブジェクトを使用します。
デスクトップフォルダやマイドキュメントなどの特殊フォルダのパスを取得するサンプルプログラム
以下に"Windows Script Host"オブジェクトを使用してデスクトップフォルダやマイドキュメントなどの特殊フォルダのパスをVBAで取得するサンプルプログラムを以下に記載します。
ExcelのVBAで作成する場合でもAccessのVBAの場合でも標準モジュールに記載してください。
Sub GetSpecialFolders()
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("WScript.Shell")
MsgBox "デスクトップフォルダのパスは、" & wScriptHost.SpecialFolders("Desktop") _
& "です。", vbInformation
End Sub
SpecialFoldersの()内に"取得したい特殊フォルダ名"を指定します。
指定できる特殊フォルダ名と取得できるフォルダについて
SpecialFoldersの()内に指定できる特殊フォルダ名と取得できるフォルダの一覧を以下に記載します。
特殊フォルダ名 | 取得できるパス |
---|---|
Desktop | デスクトップフォルダ |
Favorites | お気に入りフォルダ |
Fonts | フォントフォルダ |
MyDocuments | マイドキュメントフォルダ |
Programs | プログラムフォルダ |
Recent | 最近開いたファイルフォルダ |
SendTo | 送るフォルダ |
StartMenu | スタートアップメニューフォルダ |
StartUp | スタートアップフォルダ |
WindowsフォルダやSystem32フォルダ、テンポラリフォルダのパスを取得するサンプルプログラム
以下に"FileSystemObject"を使用してWindowsフォルダやSystem32フォルダ、テンポラリフォルダのパスを取得するサンプルプログラムを以下に記載します。
ExcelのVBAで作成する場合でもAccessのVBAの場合でも標準モジュールに記載してください。
Sub GetSystemFolders()
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
'Windowsフォルダのパスを表示
MsgBox FSO.GetSpecialFolder(0)
'System32フォルダのパスを表示
MsgBox FSO.GetSpecialFolder(1)
'Temporaryフォルダのパスを表示
MsgBox FSO.GetSpecialFolder(2)
End Sub
GetSpecialFolderの()内に取得したい特殊フォルダを表す数値を指定します。
指定できる数値と取得できるフォルダについて
GetSpecialFolderの()内に指定できる数値と指定した数値に対応する特殊フォルダの一覧を以下に記載します。
指定できる数値 | 取得できるフォルダ |
---|---|
0 | Windowsフォルダ |
1 | System32フォルダ |
2 | Temporaryフォルダ |
コメント