特殊フォルダのパスを取得する(デスクトップのパス取得)

スポンサーリンク

PCごとに異なるデスクトップを指定したい

ファイルをデスクトップに保存するVBAコードの場合、パスの中にユーザー名が含まれていたり、Windowsのバージョンによってパスが違うために他のパソコンではきちんと動作しません。

今回はどんなPCの環境でもデスクトップが指定できるWSH(Windows Scripting Host)を用いた特殊フォルダの取得をお伝えします。

デスクトップを使用するコードの例

デスクトップを指定する必要のあるコードの例は以下のようなものがあります。
「Users」が「Documents and Settings」になっている場合もあります。

①表示されているExcelファイルをデスクトップに保存する。

Sub デスクトップに保存するマクロ1()
 
ActiveWorkbook.SaveAs Filename:=”C:\Users\(ユーザー名)\Desktop\あいうえお.xlsm”, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
 
End Sub

②デスクトップにフォルダを作成する。

以前紹介したFSO(FileSystemObject)を用いたフォルダ操作のコードです。
デスクトップに「あいうえお」というフォルダを作成するコードになります。

Sub デスクトップにあいうえおフォルダを作成するマクロ()
 
Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
FSO.CreateFolder “C:\Users\(ユーザー名)\Desktop\あいうえお”
Set FSO = Nothing
 
End Sub

③デスクトップにファイルをコピーするマクロ

②と同じく以前紹介したFSO(FileSystemObject)を用いたファイル操作のコードです。
Dドライブのa.jpgというファイルをデスクトップにコピーするコードになります。

Sub デスクトップにファイルaをコピーするマクロ()
 
Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
FSO.CopyFile “D:\a.jpg”, “C:\Users\(ユーザー名)\Desktop\”
Set FSO = Nothing
 
End Sub

スポンサーリンク

WSH(Windows Scripting Host)の使うための準備

ユーザー名やWindowsのバージョンにかからわずにデスクトップを指定するためにWSH(Windows Scripting Host)を用いますが、その使い方は以下のようになります。

①最初と最後に記載するコード

WSH(Windows Scripting Host)の使い方はFSO(FileSystemObject)と似ています。
使用する場合、最初に以下のコードを書きます。

Dim WSH As Object
Set WSH = CreateObject(“Wscript.Shell”)

また最後には以下のコードを書くのが決まりです。(書かなくてもきちんと動きますが。)

Set WSH = Nothing

②指定したデスクトップを使いやすいように変数に入れる。

取得するデスクトップパスを以下のように変数に入れておくと便利です。

Dim DesktopPath As String
DesktopPath = WSH.SpecialFolders(“Desktop”)

WSH(Windows Scripting Host)の使ったコードの例

①画面に表示されているExcelファイルをデスクトップに保存する。

現在表示されているファイルをデスクトップに保存するコードは以下のように記載できます。

Sub デスクトップに保存するマクロ2()
 
Dim WSH As Object
Set WSH = CreateObject(“Wscript.Shell”)
Dim DesktopPath As String
DesktopPath = WSH.SpecialFolders(“Desktop”)
 
ActiveWorkbook.SaveAs Filename:= DesktopPath & “\あいうえお.xlsm”, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
‘DesktopPathの続きは「&」を用いて表示する
 
Set WSH = Nothing
 
End Sub

②デスクトップにフォルダを作成する

デスクトップに「あいうえお」というフォルダを作成するマクロはWSH(Windows Scripting Host)を用いて以下のように表されます。

Sub デスクトップにフォルダを作成するマクロ2()
 
Dim WSH As Object
Dim FSO As Object
Dim DesktopPath As String
Set WSH = CreateObject(“Wscript.Shell”)
Set FSO = CreateObject(“Scripting.FileSystemObject”)
DesktopPath = WSH.SpecialFolders(“Desktop”)
FSO.CreateFolder DesktopPath & “\あいうえお”
Set FSO = Nothing
Set WSH = Nothing
 
End Sub

③デスクトップにファイルをコピーするマクロ

Dドライブのa.jpgというファイルをデスクトップにコピーするコードをWSH(Windows Scripting Host)を用いると以下のようになります。

Sub デスクトップにファイルをコピーするマクロ2()
 
Dim WSH As Object
Dim FSO As Object
Dim DesktopPath As String
Set WSH = CreateObject(“Wscript.Shell”)
Set FSO = CreateObject(“Scripting.FileSystemObject”)
DesktopPath = WSH.SpecialFolders(“Desktop”)
FSO.CopyFile “D:\a.jpg”, DesktopPath & “\”
Set FSO = Nothing
 
End Sub

コードは少し増えますが、これでどんなPCでも共通で使うことができるようになります。

コメント