Saveメソッドは、ブックを保存するメソッドです。SaveメソッドとSaveプロパティを使うと色々な保存をすることができます。
SAVEメソッドの使い方
エクセルで「Book1」を作り、デスクトップに保存します。
ブックを上書き保存する
ブックを上書き保存するには、Workbooks(“ブック名”).Saveメソッドを使います。
次のコードは、ブックを上書き保存するマクロです。
Sub サンプル3150()
Workbooks("Book1").Save
End Sub
Book1を開いて、のセルA3に例えば「ブックを上書き保存します。」と入力します。
マクロの実行結果
マクロを実行すると、「ブックを上書き保存します。」と書き加えた状態を保存します。見た目は変化がないようですが、上書き保存されているので、ブックを閉じても保存されています。
メッセージボックスで保存を確認する
このマクロは、メッセージボックスで、上書き保存をするかどうかの確認します。
Sub サンプル3155()
Dim R As Integer
R = MsgBox("ワークブックを上書き保存します。", vbYesNo)
If R = vbYes Then
ActiveWorkbook.Save
End If
End Sub
マクロの実行結果
マクロを実行すると、上書き保存」のメッセージボックスが表示されます。
「はい」をクリックすると、「上書き保存」されます。
「いいえ」をクリックすると、保存しないで画面に戻ります。
Savedプロパティで変更があった時に上書き保存するマクロ
メッセージボックスを使って、ブックに変更があった時と変更がなかった時の動作を設定します。
Sub サンプル3160()
If ActiveWorkbook.Saved = False Then
MsgBox "ブックの変更を保存します。"
ActiveWorkbook.Save
Else
MsgBox "ブックは変更されていません。"
End If
End Sub
ブックに変更がない時のマクロの表示
下のテキストの内容がすでに保存されていて、ブックの内容が変更がされていない状態にあるとします。
マクロを実行すると、MsgBoxに「ブックは変更されていません。」と表示されます。
ブックが変更されている時
テキストの内容を「ブックを上書き保存します」から「ブックに変更があったときだけ上書き保存するマクロ」と変更します。
マクロを実行すると、MsgBoxに「ブックの変更を保存します。」と表示されます。
SavedプロパティがFalseの場合
テキストの内容を「ブックに変更があったときだけ上書き保存するマクロ」から「Savedプロパティの説明」と変更します。
Sub サンプル3165()
ActiveWorkbook.Saved = False
ActiveWorkbook.Close
End Sub
Saved = False
’ Saved=Falseの時は「保存しますか?」が表示されます。
マクロの実行結果
マクロを実行すると、ブックを閉じる時に確認画面がでます。
SavedプロパティがTrueの場合
Sub サンプル3170()
ActiveWorkbook.Saved = True
ActiveWorkbook.Close
End Sub
Saved = True
’ Savedプロパティ=Trueの時は「保存しますか?」が表示されません。
例えば、Book1の「Savedプロパティの説明」を「ブックを変更しました。」と変更します。
マクロの実行結果
「保存しますか?」が表示されないで、画面が閉じます。
このとき、Book1の変更は保存されないで、変更する前の表示のままです。
すべてのブックを保存して Excel を終了するマクロ
複数のブックが開いている時に、次のマクロを実行するとすべてのブックを保存してからExcel を終了します。
Sub サンプル3180()
Dim WB As Workbook
For Each WB In Application.Workbooks
WB.Save
Next WB
MsgBox "ブックの保存が終わりました。Excel を終了します。"
Application.Quit
End Sub
For Each ~ Next
’ For Each ~ Nextで開いているブックを「Saveプロパティ」ですべて保存します。Application.Quit
’ Quitメソッドは、「OK」をクリックすると、Excel(エクセル)を閉じます
マクロの実行結果
すべてのブックを保存して終了します。MsgBoxを使うと終了を確認することができます。
まとめ
SAVEメソッドを使うと、保存することができます。
SavedプロパティがFalseの場合は、変更があったときだけ上書き保存することができます。
SavedプロパティがTrueの場合は、変更をしません。