【VBA】上書き保存(Save)

Excel VBAでブックを保存するには、Save メソッドを使用します。
SaveAs と異なり、Save は 既に保存されているファイルに対して現在の変更内容を上書き保存する のが特徴です。

ここでは、上書き保存の基本コードやエラー回避のポイントを解説します。


1. アクティブブックを上書き保存する

最もシンプルな例は以下の通りです。

Sub SaveActiveBook()
ActiveWorkbook.Save
End Sub

ポイント

  • ActiveWorkbook は現在操作中のブックを指します。
  • 新規作成ブック(未保存ブック)に対して Save を実行すると、「名前を付けて保存」ダイアログが表示されます。

2. 指定ブックを上書き保存する

複数のブックを操作している場合、Workbooks("ブック名") を使って対象を明確に指定するのが安全です。

Sub SaveSpecificBook()
Workbooks("Report.xlsx").Save
End Sub

補足:
ブック名が間違っているとエラーが発生するため、事前に Workbook オブジェクトを変数に格納すると管理が楽になります。


3. ThisWorkbook(マクロブック)を保存する

マクロを実行しているブック(マクロを含むブック)を保存するには ThisWorkbook.Save を使用します。

Sub SaveMacroBook()
ThisWorkbook.Save
End Sub

4. 保存前にファイルの状態をチェックする

新規ブックに対して Save を実行すると名前を付ける必要があるため、事前に Path プロパティでチェックすると安全です。

Sub SaveWithCheck()
If ActiveWorkbook.Path = "" Then
MsgBox "このブックはまだ保存されていません。名前を付けて保存してください。"
Else
ActiveWorkbook.Save
MsgBox "ブックを上書き保存しました。"
End If
End Sub

5. 保存時に警告を非表示にする

上書き保存や特定の操作で表示されるダイアログを一時的に非表示にするには、Application.DisplayAlerts を利用します。
非表示にした後は、必ず表示されるように元の状態に戻しましょう。

Sub SaveWithoutAlert()
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
End Sub

6. まとめ

  • Save は現在のファイルに変更内容を上書き保存する
  • 未保存のブックに対しては名前を付ける必要がある(ダイアログが表示される)
  • ThisWorkbook.Save を使うとマクロ実行ブックを直接保存可能
  • Application.DisplayAlerts で不要な警告を非表示にできる

コメント

タイトルとURLをコピーしました