新規ファイルをデスクトップに「yymmdd-hhmm.xlsx」という名前で保存するだけの処理です。名前とかいいからとにかく保存しとく、という用途です。
- VBA自体は PERSONAL.xlsx に保存しておき、リボンのユーザ設定でボタンを割り当てておくのが便利かなと思います。
- アクティブになってるファイルに対して動作します。
- 新規じゃないファイルで動かしたときは上書き保存する動作にしています。
Sub とりあえずデスクトップに保存()
Dim FSO As Object 'ファイルシステムオブジェクト
Dim WSH As Variant 'WSH(Windows Scripting Host)
Dim DefaultPath As String
Dim strOutputFileName As String
Dim strDate As String
Const strExtName As String = "xlsx"
Dim i As Long
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = CreateObject("WScript.Shell")
DefaultPath = WSH.SpecialFolders("Desktop") & "\" 'デスクトップ。"\"まで入れる。
'新規ファイルかどうかを判断(一度も保存してなければ Path が空白)
If ActiveWorkbook.Path = "" Then
Else
'保存したことがあるファイルは上書き保存
ActiveWorkbook.Save
MsgBox "上書きしました。" & vbCrLf & vbCrLf & _
ActiveWorkbook.Path & "\" & ActiveWorkbook.Name, vbInformation + vbOKOnly, "上書き"
Exit Sub
End If
'--------------------------------------
'デスクトップに保存
'--------------------------------------
strDate = Format(Now(), "yymmdd-hhmm")
strOutputFileName = strDate
i = 0
Do
If FSO.FileExists(DefaultPath & "\" & strOutputFileName & "." & strExtName) = False Then
Exit Do
Else
'ファイル名
i = i + 1
strOutputFileName = strDate & "_" & i
End If
Loop
'ファイルを保存
ActiveWorkbook.SaveAs Filename:=DefaultPath & strOutputFileName & "." & strExtName
MsgBox "保存しました。" & vbCrLf & vbCrLf & _
ActiveWorkbook.Path & "\" & ActiveWorkbook.Name, vbInformation + vbOKOnly, "名前をつけて保存"
End Sub
