スポンサーリンク

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

ファイルを保存する方法については、以下の記事を参考にしてください。
>>Excelマクロでファイルを保存する方法

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

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

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

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

Sub test()

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

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

End Sub
ファイル名を変数化した図

保存先と名前を指定するには、ファイルのパス(保存先)が必要です。
フォルダまでのパスをfolderPath、変更後の名前をsaveNameにしました。

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

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

デスクトップに2つのファイルがある図

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

アドレスバーからファイルのパスをコピーする図

アドレスバーをクリックしたら全選択されるので、それを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 := パスで保存先とファイル名が指定可能です。

ファイル名を指定して保存するコード

上記コードを実行すると、デスクトップに”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」になります!!

まとめ

今回はファイル名に日付を入れて保存する方法を紹介しました。
ファイルを保存する方法や開く方法についても解説しているので、ぜひご覧ください。

コメント

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