大体でIT
大体でIT
2020/8/21
Excel VBAのSavaAsで名前を付けて保存する方法をご紹介します。名前を付けて保存する際には、日付を付けると名前が被らないのでおすすめです。保存する際に拡張子を変更して保存することもできます。
この記事では、Excel VBAの「SaveAs」で、名前を付けて保存する方法をご紹介します。
名前を付けて保存する場合、ファイル名に日付を付ける方法をおすすめします。
ファイル名に日付を付けて保存すれば、履歴を残しながらファイルを更新していく、といった使い方もできます。
名前を付けて保存する際に、「拡張子を変更」して保存することもできます。
では、Excel VBAを使って、「SaveAs」で名前を付けて保存する方法を解説していきます。
VIDEO
Excel VBAの「SaveAs」で名前を付けて保存してみます。
Excel VBAコード
名前を付けて保存するExcel VBAコードです。
'ブックを名前を付けて保存
Sub TEST1()
'名前を付けて保存
ThisWorkbook.SaveAs FileName:=ThisWorkbook.Path & "\TEST1.xlsm"
End Sub
「〇〇.SaveAs FileName:=△△」で〇〇というファイルを△△という名前で保存という意味になります。
「ThisWorkbook.SaveAs FileName:=a」で、現在のファイルをaというファイルパスで保存するということになります。
「ThisWorkbook.Path」は現在のファイルのフォルダパスを取得するコードです。
例えば現在のファイルが「C:〇〇\〇〇\TEST.xlsm」だとすると「C:〇〇\〇〇」を取得することができます。
現在のファイルの同フォルダからフルパスを記載する際に便利です。
保存前
元ファイルは「TEXT.xlsm」という名前です。
名前を付けてファイルを保存後
「TEXT1.xlsm」という名前で保存されました。
名前を付けて保存なので、開いているファイルは保存後の名前になっています。
フォルダにも新しく「TEXT1.xlsm」ができています。
もちろん元のファイル「TEST.xlsm」はそのままです。
ファイルを名前を付けて保存する際は、「日付+時刻」を付けるのがおすすめです。
名前を付けて保存する際には、「ファイル名」に気を付ける必要があります。
同じ名前があると確認画面が出てきて、Excel VBAではエラーとなったり、元データを消してしまうリスクがあるからです。
なので、名前を付けて保存する際は、「日付+時刻」を付けて、ユニークなファイル名にしましょう。
「Now」と「Format」を使って、ファイル名に「日付+時刻」を付けてみます。
Excel VBAコード
ファイル名に日付を付けて保存するExcel VBAコードです。
'ブックを名前を付けて保存(日付)
Sub TEST2()
Dim A, B, C, D
A = "TEST" 'ファイル名
B = Format(Now(), "yyyymmdd-hhmmss") '日付
C = A & "_" & B & ".xlsm" 'ファイル名(拡張子付き)
D = ThisWorkbook.Path & "\" & C 'ファイルパス
'名前を付けて保存
ThisWorkbook.SaveAs FileName:=D
End Sub
「Now()」で日付と現在の時刻を取得することができます。
取得した日付と時刻を「Format」で「yyyymmdd-hhmmss」形式にしています。
これで、「20200808-121212」のように日付を取得することができます。
保存前
名前を付けて保存(日付を付ける)
「TEST_日付.xlsm」のように日付がついて保存されています。
フォルダには元ファイルは残ったままで新しく日付が入ったファイルが保存されています。
ファイルの拡張子を変更して名前を付けて保存する方法です。
ファイルの拡張子の変更を使う場面としては、「.csv」形式や「.txt」形式で保存したい場合があります。
現在のファイルの一部のシートを、別ブックにコピーして拡張子を変えて保存といった場合ですね。
ここでは簡単に説明するため、現在のファイルの拡張子を変更して保存する方法で説明します。
代表的なもので、次の拡張子へ変更する方法をご紹介します。
拡張子
Excel VBAコード
.xlsxへ拡張子を変更して、ファイルを保存するExcel VBAコードです。
'ブックを名前を付けて保存(.xlsx)
Sub TEST3()
'確認画面を非表示
Application.DisplayAlerts = False
'名前を付けて保存(.xlsx)
ThisWorkbook.SaveAs FileName:=ThisWorkbook.Path & "\TEST1.xlsx", FileFormat:=xlOpenXMLWorkbook
End Sub
拡張子を変更するには、「FileFormat」に引数を入力します。
「.xlsx」形式で保存したい場合は、「FileFormat:=xlOpenXMLWorkbook」のように指定します。
「Application.DisplayAlerts = False」で、確認画面を非表示にすることができます。
拡張子を変えてファイルを保存すると確認画面がでてきますので、これを非表示にすることができます。
保存前
名前を付けて保存後(.xlsx)
拡張子を.xlsxへ変更して名前を付けて保存した結果です。
ファイルの拡張子が、「.xlsx」に変更されていることがわかります。
拡張子が、「.xlsx」となったファイルができています。
Excel VBAコード
「.xlsm」へ拡張子を変更して、ファイルを保存するExcel VBAコードです。
'ブックを名前を付けて保存(.xlsm)
Sub TEST4()
'名前を付けて保存(.xlsm)
ThisWorkbook.SaveAs FileName:=ThisWorkbook.Path & "\TEST1.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
End Sub
「.xlsm」は、「FileFormat:=xlOpenXMLWorkbookMacroEnabled」のように指定します。
「.xlsm」の場合は、「FileFormat」を省略することができます。
保存前
名前を付けて保存(.xlsm)
拡張子を.xlsmへ変更して名前を付けて保存した結果です。
ファイルの拡張子が、「.xlsm」に変更されていることがわかります。
拡張子が「.xlsm」となったファイルができています。
Excel VBAコード
「.csv」へ拡張子を変更して、ファイルを保存するExcel VBAコードです。
'ブックを名前を付けて保存(.csv)
Sub TEST5()
'名前を付けて保存(.csv)
ThisWorkbook.SaveAs FileName:=ThisWorkbook.Path & "\TEST1.csv", FileFormat:=xlCSV
End Sub
「.csv」は、「FileFormat:=xlCSV」のように指定します。
保存前
名前を付けて保存(.csv)
拡張子を「.csv」へ変更して、名前を付けて保存した結果です。
ファイルの拡張子が、「.csv」に変更されていることがわかります。
拡張子が「.csv」となったファイルができています。
Excel VBAコード
「.txt」へ拡張子を変更して、ファイルを保存するExcel VBAコードです。
'ブックを名前を付けて保存(.txt)
Sub TEST6()
'名前を付けて保存(.txt)
ThisWorkbook.SaveAs FileName:=ThisWorkbook.Path & "\TEST1.txt", FileFormat:=xlText
End Sub
「.txt」は、「FileFormat:=xlText」のように指定します。
保存前
名前を付けて保存(.txt)
拡張子を「.txt」へ変更して、名前を付けて保存した結果です。
ファイルの拡張子が「.txt」に、変更されていることがわかります。
拡張子が「.txt」となったファイルができています。
エクセルで.txtで開いているので違和感がありますので、メモ帳で開いてみます。
ちょっとタイトルからは脱線しますが、Excel VBAの「SaveCopyAs」で現在のファイルをコピーして保存する方法です。
名前を付けて保存ではなく現在のファイルをバックアップしたい場合に使えるかと思いますのでご紹介します。
「SaveCopyAs」を使って、バックアップを作成してみます。
Excel VBAコード
'ブックを別ブックで保存(バックアップ)
Sub TEST7()
Dim A, B, C, D
A = "TEST" 'ファイル名
B = Format(Now(), "yyyymmdd-hhmmss") '日付
C = A & "_" & B & ".xlsm" 'ファイル名(拡張子付き)
D = ThisWorkbook.Path & "\" & C 'ファイルパス
'ブックをコピーして保存
ThisWorkbook.SaveCopyAs FileName:=D
End Sub
「SaveCopyAs」を使ってファイルをコピーすることができます。
「〇〇.SaveCopyAs FileName:=△△」というように記載して、〇〇をファイル名△△でコピーするということになります。
コピー前
ファイルコピー後
現在のファイルを変更しないで、バックアップしたい場合は、「SaveCopyAs」を使いましょう。
Excel VBAの「SaveAs」で、名前を付けて保存する方法をご紹介しました。
名前を付けて保存する場合は、ファイル名に「日付」を付けて保存する方法をおすすめします。
拡張子を変更して保存したい場合は、「FileFormat」使うとできます。
エクセルファイルを、「CSV」へ変換するといった使い方すると便利です。
バックアップをしたい場合は、「SaveCopyAs」を使うとできます。
実務で「SaveAs」と「SaveCopyAs」を使いこなしていきましょう。
参考になればと思います。最後までご覧くださいましてありがとうございました。