Home » WSH・Windows Script Hostの使い方 » デスクトップのパスを取得する-SpecialFolders("Desktop")

デスクトップのパスを取得する-SpecialFolders("Desktop")

対象:WSH, Windows Scripting Host, VBA

「vba デスクトップ パス 取得」
「エクセル VBA デスクトップ パス」
「ACCESS VBA デスクトップ パス」
といった検索キーワードでのアクセスが時折あります。

WshShellオブジェクトのSpecialFoldersプロパティを使うと、

オブジェクトブラウザー:WshShell.SpecialFolders

Excel VBAでもAccess VBAでも、デスクトップのパスを取得できます。

[スポンサードリンク]

デスクトップのパスを取得するサンプルマクロ

以下のSubプロシージャを実行すれば、デスクトップのパスがメッセージボックスに表示されます。
Sub デスクトップのパスを取得_CreateObject()
 Dim wsh As Object
 Set wsh = CreateObject("WScript.Shell")
 MsgBox wsh.SpecialFolders("Desktop")
 Set wsh = Nothing
End Sub

WshShellオブジェクトのSpecealFoldersプロパティで取得したWshCollectionコレクションオブジェクトの、既定メンバーであるItemメソッドに、

オブジェクトブラウザー: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への参照設定が行われていれば、

参照設定:Windows Script Host Object Model

以下のようなSubプロシージャでもOKです。
Sub デスクトップのパスを取得_参照設定済()
 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ライブラリーのメンバーですから、

オブジェクトブラウザー:IWshRuntimeLibrary.WshShell

上記Subプロシージャのとおり変数宣言は、
  Dim wsh As IWshRuntimeLibrary.WshShell
オブジェクト変数に格納するステートメントは、
  Set wsh = New IWshRuntimeLibrary.WshShell
です。

[スポンサードリンク]

Home » WSH・Windows Script Hostの使い方 » デスクトップのパスを取得する-SpecialFolders("Desktop")

「WSH・Windows Script Hostの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.