「2010 vba 同じファイル名でデスクトップに保存する」
「2010 vba 開いているファイルと同じファイル名でデスクトップに保存する」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
現在開いているファイルを、同じ名前でデスクトップに保存するVBA(Visual Basic for Applications)のコード・マクロを探している方による検索です。
どのアプリケーションのマクロを探していたのかまではこの検索ログではわかりませんが、ここではExcelマクロをご紹介しておきます。
デスクトップのパスを取得する
まずは、デスクトップのフルパスを取得するExcelマクロをご紹介しておきます。
実は、標準のVBAだけでは、デスクトップのパスを取得することはできません。
デスクトップのフルパスを取得するにはいくつかの方法が考えられますが、WSH(Windows Scripting Host)を利用するのが簡単でしょう。
Dim wsh As Object 'IWshRuntimeLibrary.WshShell
Dim dt_path as String
Set wsh = CreateObject("WScript.Shell")
dt_path = wsh.SpecialFolders("desktop")
Set wsh = Nothing
MsgBox dt_path
End Sub上記のマクロを実行すると、デスクトップのフルパスがメッセージボックスに表示されます。
WshShellオブジェクトをCreateObjectしてから、
Set wsh = CreateObject("WScript.Shell")
WshShellオブジェクトのSpecialFoldersプロパティでWshCollectionオブジェクトを取得して、
そのデフォルトメンバーであるItemメソッドの引数に、
「desktop」という文字列を指定することでデスクトップのフルパスを取得できるので、取得した文字列を変数・dt_pathに格納して、
dt_path = wsh.SpecialFolders("desktop")
その文字列をメッセージボックスに表示しています。
MsgBox dt_path
Windows Script Host Object Modelを参照設定していれば、
以下のようなマクロでもOKです。
Sub デスクトップのフルパスを取得する_参照設定済み()
Dim wsh As New IWshRuntimeLibrary.WshShell
Dim dt_path As String
dt_path = wsh.SpecialFolders("desktop")
MsgBox dt_path
End Sub
同じ名前でデスクトップに保存するサンプルマクロ
上記のコードを含んだ、以下のようなマクロにすれば、アクティブなブックをデスクトップ上に同じ名前で保存することができます。
Dim wsh As Object 'IWshRuntimeLibrary.WshShell
Dim dt_path As String
Dim bk_name As String
Set wsh = CreateObject("WScript.Shell")
dt_path = wsh.SpecialFolders("desktop")
Set wsh = Nothing
bk_name = ActiveWorkbook.Name
ActiveWorkbook.SaveAs _
Filename:=dt_path & "\" & bk_name
先の、デスクトップのフルパスを取得するマクロと同じコードで、変数・dt_pathにフルパスを格納してから、
Set wsh = CreateObject("WScript.Shell")
dt_path = wsh.SpecialFolders("desktop")
アクティブなブックの名前を取得して、
bk_name = ActiveWorkbook.Name
Workbook.SaveAsメソッドの引数・Filenameに、フルパスとブック名を結合した文字列を指定して保存をしています。
ActiveWorkbook.SaveAs _
Filename:=dt_path & "\" & bk_name
デスクトップ上に同じ名前のファイルが存在していた場合、上書き保存するかどうかを確認するメッセージが表示されます。このケースは、Workbook.SaveAsメソッドを利用する場合に、とてもよくいただくご質問でもありますので、近日中に別記事として解説させていただきます。
まずは、WSHを使って、VBAでデスクトップのパスを取得する方法をご理解ください。
Home » エクセルマクロ・Excel VBAの使い方 » Workbooks・Workbook » デスクトップに同じ名前で保存するExcelマクロ