「vba デスクトップ パス 取得」
「エクセル VBA デスクトップ パス」
「ACCESS VBA デスクトップ パス」
といった検索キーワードでのアクセスが時折あります。
WshShellオブジェクトのSpecialFoldersプロパティを使うと、
Excel VBAでもAccess VBAでも、デスクトップのパスを取得できます。
デスクトップのパスを取得するサンプルマクロ
以下のSubプロシージャを実行すれば、デスクトップのパスがメッセージボックスに表示されます。Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
MsgBox wsh.SpecialFolders("Desktop")
Set wsh = Nothing
End Sub
WshShellオブジェクトのSpecealFoldersプロパティで取得したWshCollectionコレクションオブジェクトの、既定メンバーであるItemメソッドに、
文字列「Desktop」を指定すれば、デスクトップのパスを取得できます。
既定メンバーItemを省略しているだけですから上記の、
MsgBox wsh.SpecialFolders("Desktop")
の行は、
MsgBox wsh.SpecialFolders.Item("Desktop")
と書いても同じです。
また実は、
MsgBox wsh.SpecialFolders("Desktop")
ではなく、
MsgBox wsh.SpecialFolders(4)
あるいは、
MsgBox wsh.SpecialFolders(10)
でもデスクトップのパスを取得できるのですけれど、文字列で「Desktop」と書かれているほうが、可読性の面からいいでしょう。
参照設定済の環境でデスクトップのパスを取得するサンプルマクロ
Windows Script Host Object Modelへの参照設定が行われていれば、
以下のようなSubプロシージャでもOKです。Dim wsh As IWshRuntimeLibrary.WshShell
Set wsh = New IWshRuntimeLibrary.WshShell
MsgBox wsh.SpecialFolders("Desktop")
Set wsh = Nothing
End Sub
先のCreateObject関数の引数に指定したPrgoID「WScript.Shell」とは随分異なりますが、WshShellオブジェクトは、IWshRuntimeLibraryライブラリーのメンバーですから、
上記Subプロシージャのとおり変数宣言は、
Dim wsh As IWshRuntimeLibrary.WshShell
オブジェクト変数に格納するステートメントは、
Set wsh = New IWshRuntimeLibrary.WshShell
です。
- Newer:グラフタイトルのフォントサイズを変更する-ChartTitle.Font.Size
- Older:名前を付けて保存ダイアログ・Dialogs(xlDialogSaveAs).Showのキャンセル
Home » WSH・Windows Script Hostの使い方 » デスクトップのパスを取得する-SpecialFolders("Desktop")