ブックの保存(上書き保存)
ブックを上書き保存するには、保存対象ブックのWorkbookオブジェクトのSaveメソッドを利用します。
Saveメソッドで保存すると、ブックの内容が保存されるだけでなく、そのブックの更新日時が保存時点の日時に更新されるなど、Excelで保存したときと同様の動作になります。
なお、上書き保存ではなく名前を付けて保存を行いたい場合は「VBAでブックに名前を付けて保存する(SaveAs)」をご参照ください。
Saveメソッドの特殊な動作
Saveメソッドを使った保存の場合、既存のブックを開いて変更を行って保存した場合はExcelで保存したときと同様にそのまま上書き保存されます。しかし、新規作成ブック(まだ保存したことがないブック)に対して保存を行う場合は、注意が必要です。
新規作成したブックを初めて保存する場合、通常のExcel操作の場合は保存ダイアログが表示され、保存先やブック名を入力して保存しますが、VBAでのSaveメソッドの場合は保存先ダイアログは表示されず、無条件にカレントフォルダに「Book1.xlsx」のような名前で保存されます。
Saveメソッドは単に保存するだけのため、保存先やブック名を指定することができません。ただそれでは困るため、新規作成するブックの場合は「名前を付けて保存」を行うSaveAsメソッドを使うことで保存先やブック名などを指定することが出来ます。
構文
Saveメソッドの構文は以下になります。
Sub Workbook.Save()
戻り値や引数はありません。
「上書き保存」の場合は、そのブックを示すWorkbookオブジェクトのSaveメソッドを実行すると保存されます。保存されるだけでブックは開いたままです。
サンプルコード
以下では、既に存在しているブックを開いて保存する場合と、新規作成したブックを保存する場合について紹介します。
コード1:既にあるブックを開いて保存する
以下のコードは、既に作成済みのブックを開いて上書き保存します。
ブックを開くにはWorkbooks.Openメソッドを使います。詳細は「VBAでExcelブックを開く方法(Workbooks.Open)」をご参照ください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub WorkbookSaveTest() Dim wb As Workbook '// ワークブック '// ワークブックを開く Set wb = Workbooks.Open("V:\aaa\abc.xlsx") '// 一番左のシートのA1セルを書き換える wb.Worksheets(1).Range("A1").Value = "abc" '// 保存する(単純な上書き保存) Call wb.Save '// 閉じる Call wb.Close End Sub |
コード2:ブックを新規作成して保存する
以下のコードは、ブックを新規作成して上書き保存します。
ブックの新規作成はAddメソッドを利用します。Addメソッドについての詳細は「VBAでブックの新規作成を行う(Workbooks.Add)」をご参照ください。
新規作成ブックをSaveメソッドで保存するとカレントフォルダに「Book1.xlsx」のような名前で保存されるため、カレントフォルダが不明な場合に困るため、保存後に保存先のパスを出力するようにしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub NewWorkbookSaveTest() Dim wb As Workbook '// ワークブック '// ワークブックを新規作成(この時点では未保存) Set wb = Workbooks.Add '// 一番左のシートのA1セルを書き換える wb.Worksheets(1).Range("A1").Value = "abc" '// 保存する(カレントフォルダにBook1.xlsxなどの名前で保存) Call wb.Save '// 保存先パスを出力 Debug.Print wb.FullName '// 閉じる Call wb.Close End Sub |