PCごとに異なるデスクトップを指定したい
ファイルをデスクトップに保存するVBAコードの場合、パスの中にユーザー名が含まれていたり、Windowsのバージョンによってパスが違うために他のパソコンではきちんと動作しません。
今回はどんなPCの環境でもデスクトップが指定できるWSH(Windows Scripting Host)を用いた特殊フォルダの取得をお伝えします。
デスクトップを使用するコードの例
デスクトップを指定する必要のあるコードの例は以下のようなものがあります。
「Users」が「Documents and Settings」になっている場合もあります。
①表示されているExcelファイルをデスクトップに保存する。
ActiveWorkbook.SaveAs Filename:=”C:\Users\(ユーザー名)\Desktop\あいうえお.xlsm”, _
FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
②デスクトップにフォルダを作成する。
以前紹介したFSO(FileSystemObject)を用いたフォルダ操作のコードです。
デスクトップに「あいうえお」というフォルダを作成するコードになります。
Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
FSO.CreateFolder “C:\Users\(ユーザー名)\Desktop\あいうえお”
Set FSO = Nothing
End Sub
③デスクトップにファイルをコピーするマクロ
②と同じく以前紹介したFSO(FileSystemObject)を用いたファイル操作のコードです。
Dドライブのa.jpgというファイルをデスクトップにコピーするコードになります。
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)と似ています。
使用する場合、最初に以下のコードを書きます。
Set WSH = CreateObject(“Wscript.Shell”)
また最後には以下のコードを書くのが決まりです。(書かなくてもきちんと動きますが。)
②指定したデスクトップを使いやすいように変数に入れる。
取得するデスクトップパスを以下のように変数に入れておくと便利です。
DesktopPath = WSH.SpecialFolders(“Desktop”)
WSH(Windows Scripting Host)の使ったコードの例
①画面に表示されているExcelファイルをデスクトップに保存する。
現在表示されているファイルをデスクトップに保存するコードは以下のように記載できます。
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)を用いて以下のように表されます。
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)を用いると以下のようになります。
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でも共通で使うことができるようになります。
コメント