MENU

【VBA】ファイル保存を完全マスター|Save・SaveAsメソッドの使い方と具体例

VBAを活用して業務を効率化する際、ファイルの保存処理は欠かせません。

この記事では、VBAでファイルを保存するための基本的な方法から、条件に応じた応用的な保存方法まで、具体的なコード例とともに解説します。

目次

Saveメソッドによる上書き保存

Save メソッドは、現在のワークブックを上書き保存するために使用します。変更内容をそのまま保存したい場合に便利です。

Saveメソッドの基本構文

WorkbookObject.Save
  • WorkbookObject:保存対象のワークブック。通常はThisWorkbook(このマクロが含まれるブック)やActiveWorkbook(現在アクティブなブック)を使用します。

Saveメソッドの具体例:現在のワークブックを保存する

Sub SaveCurrentWorkbook()
    ThisWorkbook.Save
    MsgBox "ファイルが保存されました。"
End Sub

このコードは、マクロが記述されているワークブックを上書き保存し、保存完了のメッセージを表示します

SaveAsメソッドによる別名保存

SaveAsメソッドを使用すると、ファイル名や保存形式を指定して新たに保存できます。バックアップや異なる形式での保存に適しています。

SaveAsメソッドの基本構文

WorkbookObject.SaveAs Filename:="保存先のパスとファイル名", FileFormat:=ファイル形式
  • Filename: 保存するファイルの完全なパスと名前。
  • FileFormat: 保存形式を指定する定数(例: xlOpenXMLWorkbook.xlsx 形式)。

主要なファイル形式は以下の通りです。

FileFormatの定数説明拡張子
xlOpenXMLWorkbookExcelブック(Excel 2007以降).xlsx
xlExcel8Excel 97-2003ブック.xls
xlCSVCSV形式.csv
xlOpenXMLWorkbookMacroEnabled×.xlsm

SaveAsメソッドの具体例

Sub SaveAsNewFile()
    '新規ブックの作成
    Dim newWB As Workbook
    Set newWB = Workbooks.Add
    
    Dim newFileName As String
    newFileName = ThisWorkbook.Path & "\newWorkBook.xlsx"
    
    newWB.SaveAs Filename:=newFileName, FileFormat:=xlOpenXMLWorkbook
    MsgBox "ファイルが " & newFileName & " として保存されました。"
End Sub

このコードは、新規のワークブックを「newWorkBook.xlsx」という名前でマクロブックと同じ場所に保存し、保存完了のメッセージを表示します。

保存前の変更確認

保存する前に、ファイルが変更されているかどうかを確認することも重要です。変更があった場合にのみ保存することで、不要な上書きを防ぐことができます。

具体例:変更があった場合にのみ保存する

Sub SaveIfChanged()
    If ThisWorkbook.Saved = False Then
        ThisWorkbook.Save
        MsgBox "変更があったため、ファイルを保存しました。"
    Else
        MsgBox "変更がないため、保存は行いませんでした。"
    End If
End Sub

このコードは、ワークブックに変更があった場合のみ保存し、その結果をメッセージで通知します。

まとめ

SaveメソッドとSaveAsメソッドを適切に使い分けることで、上書き保存や別名保存、新規ブックの作成と保存など、さまざまなニーズに対応できます。あなたの作業に最適な保存方法を見つけてください。

この記事を書いた人

めんどくさがりでズボラ。
某自動車メーカーで、VBAやRPAを用いた業務効率化を行っております。

目次