大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAのSavaAsで名前を付けて保存する方法をご紹介します。名前を付けて保存する際には、日付を付けると名前が被らないのでおすすめです。保存する際に拡張子を変更して保存することもできます。

はじめに

この記事では、Excel VBAの「SaveAs」で、名前を付けて保存する方法をご紹介します。

名前を付けて保存する場合、ファイル名に日付を付ける方法をおすすめします。

ファイル名に日付を付けて保存すれば、履歴を残しながらファイルを更新していく、といった使い方もできます。

名前を付けて保存する際に、「拡張子を変更」して保存することもできます。

では、Excel VBAを使って、「SaveAs」で名前を付けて保存する方法を解説していきます。

この記事を読むメリット

  • VBAで名前を付けて保存する方法がわかります

本記事の内容を動画でまとめています

目次から見たい項目へ移動すると便利ですよ。

目次

VBAのSaveAsで名前を付けて保存

Excel VBAの「SaveAs」で名前を付けて保存してみます。

SaveAsを使う

「SaveAs」は次のように入力します。

Excel VBAコード

名前を付けて保存するExcel VBAコードです。

'ブックを名前を付けて保存
Sub TEST1()
    
    '名前を付けて保存
    ThisWorkbook.SaveAs FileName:=ThisWorkbook.Path & "\TEST1.xlsm"
        
End Sub

「SaveAs」を使います。

「〇〇.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」を使う

「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」形式で保存したい場合があります。

現在のファイルの一部のシートを、別ブックにコピーして拡張子を変えて保存といった場合ですね。

ここでは簡単に説明するため、現在のファイルの拡張子を変更して保存する方法で説明します。

代表的なもので、次の拡張子へ変更する方法をご紹介します。

拡張子

  • .xlsx
  • .xlsm
  • .csv
  • .txt

では、実際にやってみます。

.xlsx

拡張子.xlsxで保存する方法です。

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」に変更されていることがわかります。

保存後のフォルダです。

.xlsxへ変更してファイルを保存したフォルダ

拡張子が、「.xlsx」となったファイルができています。

.xlsm

拡張子「.xlsm」で保存する方法です。

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」に変更されていることがわかります。

保存後のフォルダです。

拡張子を.xlsmへ変更して保存した後のフォルダ

拡張子が「.xlsm」となったファイルができています。

.csv

拡張子「.csv」で保存する方法です。

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」に変更されていることがわかります。

保存後のフォルダです。

拡張子を.csvへ変更して保存したフォルダ

拡張子が「.csv」となったファイルができています。

.txt

拡張子「.txt」で保存する方法です。

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へ変更して保存したフォルダ

拡張子が「.txt」となったファイルができています。

エクセルで.txtで開いているので違和感がありますので、メモ帳で開いてみます。

拡張子を.txtへ変更したファイルをメモ帳で開く

問題なくメモ帳で開けます。

VBAのSaveCopyAsでバックアップ

ちょっとタイトルからは脱線しますが、Excel VBAの「SaveCopyAs」で現在のファイルをコピーして保存する方法です。

名前を付けて保存ではなく現在のファイルをバックアップしたい場合に使えるかと思いますのでご紹介します。

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」を使いこなしていきましょう。

参考になればと思います。最後までご覧くださいましてありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す