【VBA】Excelマクロで日付を入れた名前を付けて保存する方法

VBA
スポンサーリンク

マクロで日付を取得して、ファイル名に加えて保存することができます。

Sub test()

folderPath = "C:\Users\[ユーザー名]\Desktop"
saveName = "Save"
y = Year(Date)
m = Month(Date)
d = Day(Date)
FullName = saveName & "_" & y & "_" & m & d & ".xlsm"

ThisWorkbook.SaveAs (folderPath & "\" & FullName)

End Sub

ファイルを保存する方法については以下の記事で詳しく解説しています。

名前を付けてファイルを保存する方法

名前を付けて保存する方法は2パターンあります。

①SaveAsで保存する
②Closeで保存しながら閉じる

①SaveAsで名前を付けて保存する

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
saveName = "Save.xlsm"

ThisWorkbook.SaveAs (folderPath & "\" & saveName)

End Sub
SaveAsのコード例

保存先と名前を指定するには、ファイルのパス(保存先)が必要です。

フォルダまでのパスをfolderPath、変更後の名前をsaveNameにしました。

ユーザー名は人によって違うので注意してください。

実行するとデスクトップに保存されるはずです。↓

実行後のデスクトップ

パスってどうやって調べるの?

フォルダのパスをコピペする図

アドレスバーをクリックしたら全選択されるので、それをfolderPathにコピペすればOKです!

実行ファイルではなく別のファイルを保存したいなら、ThisWorkbookの部分を書き換えます。

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
saveName = "Save.xlsm"

Workbooks("Book1.xlsx").SaveAs (folderPath & "\" & saveName)

End Sub

Workbooks(“ファイル名”)で保存したいファイルを指定しましょう。

ファイルの指定方法については、Excelマクロでセルシートファイルを指定する方法をご覧ください。

②Closeで名前を付けて保存しながら閉じる

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
saveName = "SaveClose.xlsm"

ThisWorkbook.Close savechanges:=True, Filename:=folderPath & "\" & saveName

End Sub

savechanges := Trueで変更を保存しています。

また、Filename := パスで保存先とファイル名が指定可能です。

Closeでファイルを保存するコード例

上記コードを実行すると、デスクトップに”SaveClose.xlsm”として保存されます。

しかしCloseでは最後にカラのExcelファイルが残ってしまいます。

残るのが嫌な人はSaveAsの後でExcelを終了させましょう。

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
saveName = "Save.xlsm"

ThisWorkbook.SaveAs (folderPath & "\" & saveName)
Application.Quit

End Sub

AppplicationはExcelアプリ自体を指します。Quitでアプリを終了できます。

他のファイルも一緒に閉じてしまうので注意してくださいね。

日付を取得する方法

Date:今日の日付

日付を取得するにはDateを使います。

Sub test()

MsgBox Date

End Sub

実行すると現在の日付が表示されるはずです。

Year, Month, Day

Yearで年、Monthで月、Dayで日を取得できます。

Sub test()

MsgBox Year(Date)
MsgBox Month(Date)
MsgBox Day(Date)

End Sub

Dateを()に入れましょう。

そして、取得した年月日を&で文字列として連結することができます。

Sub test()

y = Year(Date)
m = Month(Date)
d = Day(Date)

MsgBox "今日は" & y & "年" & m & "月" & d & "日です。"

End Sub

この機能を使ってファイル名に日付を加えれば完成です!!

日付を入れた名前を付けて保存する方法

日付を入れたファイル名を作成する

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
saveName = "Save"
y = Year(Date)
m = Month(Date)
d = Day(Date)
FullName = saveName & "_" & y & "_" & m & d & ".xlsm"
MsgBox FullName

End Sub
ファイル名に日付を加えるコード例

saveNameの部分で拡張子を入れるとFullNameの作成で都合が悪くなります。

なので、最初は拡張子なしでファイル名を用意しましょう。

FullNameが最終的に保存したい名前です。

後はこれをSaveAsまたはCloseに入れるだけですね!!

日付を入れたファイル名で保存する

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
saveName = "Save"
y = Year(Date)
m = Month(Date)
d = Day(Date)
FullName = saveName & "_" & y & "_" & m & d & ".xlsm"

ThisWorkbook.SaveAs (folderPath & "\" & FullName)

End Sub

これで日付を入れた名前で保存することができました。

保存後のデスクトップ画面

くどいですが、ユーザー名は人によって違います。

Closeを使う方法は以下の通りです。↓

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
saveName = "Save"
y = Year(Date)
m = Month(Date)
d = Day(Date)
FullName = saveName & "_" & y & "_" & m & d & ".xlsm"

ThisWorkbook.Close savechanges:=True, Filename:=folderPath & "\" & FullName

End Sub

もし実行ファイルではなく、別のファイルを保存したいなら、ThisWorkbookをWorkbooks(“ファイル名”)に変えてください。

Formatで日付のフォーマットを整える

1月1日を”0101″にすると、月日によらず文字数を統一できて見栄えが良いですよね。

Sub test()

folderPath = "C:\Users\HTOM\Desktop"
saveName = "Save"
y = Year(Date)
m = Format(Month(Date), "00")
d = Format(Day(Date), "00")
FullName = saveName & "_" & y & "_" & m & d & ".xlsm"

ThisWorkbook.SaveAs (folderPath & "\" & FullName)

End Sub
日付のフォーマットを整えた例

Formatの()に入れて、”00″に設定することで2桁表記にできます。

月と日は2文字で表し、それぞれ変数mとnに入れてnameの中で使いましょう。

するとファイル名は2021年1月1日なら「2021_0101」になります!!

まとめ:ファイル名を工夫して保存しよう

今回はファイル名に日付を入れて保存する方法について解説しました。

保存方法全般についてはExcelマクロでファイルを保存する方法をご覧ください。

また、ファイルを自動で開く方法についても解説しています。

コメント

タイトルとURLをコピーしました