VBA共通:デスクトップフォルダやマイドキュメントフォルダなどWindowsの特殊フォルダのパスをVBAで取得するサンプルプログラム

マイドキュメントフォルダやデスクトップフォルダなどログインユーザーによってパスが変わるフォルダや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フォルダ

コメント

タイトルとURLをコピーしました