こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!
今日は、Excelを使っていて地味に、でも確実にストレスが溜まる「あの瞬間」についてお話しします。
ファイルを閉じようとするたびに現れる、「変更を保存しますか?」というポップアップ。これを毎回クリックするのは、意外と集中力を削ぐ作業ですよね。
特に、膨大なデータを扱っている時や疲労が溜まっている時、「あれ? どこか書き換えてしまったかな? 保存して大丈夫だろうか……」と迷い、手が止まってしまった経験はありませんか? その数秒の迷いも、一日に何度も重なれば大きなタイムロスになります。
今回は、そんな不安を解消し、「自動で、迷わず、スマートに閉じる」ためのVBAコードをご紹介します。
なぜ「確認画面」をスキップするべきなのか?
「確認画面が出るのは親切なんじゃないの?」と思うかもしれません。もちろん、手動で作業している時はそうです。
しかし、「閲覧専用で開いたファイル」や「マクロによるデータ転記用の参照ブック」の場合はどうでしょうか。 もし誤って「保存する」を選択してしまったら、元のマスターデータが崩れてしまうリスクがあります。
実は、コードで「保存せずに閉じる」と明記して制御する方が、誤操作によるデータ破損のリスクをゼロにできるため、精神的にも非常に楽になれるのです。
【コピペOK】ブックを閉じるためのVBAコード
それでは、用途に合わせた3つのパターンを見ていきましょう。
1. 保存せずに閉じる(変更を破棄する)
「誤ってデータを書き換えたくない」という時は、このコード一択です。変更を一切無視して閉じます。
Sub CloseWithoutSaving()
' 解説:このブックを、変更を保存せずに(False)閉じます。
ThisWorkbook.Close SaveChanges:=False
End Sub
2. 上書き保存して閉じる
逆に、「常に最新の状態で保存して終了したい」という場合はこちら。確認画面を出さずに、強制的に上書き保存して閉じます。
Sub CloseWithSaving()
' 解説:このブックを、変更を保存して(True)閉じます。
ThisWorkbook.Close SaveChanges:=True
End Sub
3. 別のブックを開いて、用が済んだら保存せずに閉じる
実務で最も頻出するパターンです。外部の売上データ等を開いて情報を取得し、そのブックは変更を加えずに閉じる例です。
Sub GetDataAndClose()
Dim targetBook As Workbook
' テスト用にCドライブ直下のデータを開く例
' ※実際のパスに合わせて書き換えてください
Set targetBook = Workbooks.Open("C:\Data\SalesData.xlsx")
' ここにデータを転記する処理が入ります(今回は省略)
' 最後に、開いたブックを「保存せずに」閉じます
targetBook.Close SaveChanges:=False
MsgBox "データの転記が完了し、元ファイルを閉じました。"
End Sub
コードの解説(ここだけ覚えればOK!)
ポイントは SaveChanges(セーブ・チェンジズ)という引数(ひきすう)の設定です。
- SaveChanges:=False
「変更を保存しますか?」に対して「いいえ(False)」と答えるのと同じ動きをします。
どんな操作をしていても開く前の状態が維持されるので、参照用ブックに最適です。 - SaveChanges:=True
「変更を保存しますか?」に対して「はい(True)」と答えるのと同じ動きをします。
問答無用で上書きされるため、確実に保存したい時のみ使用しましょう。
ちなみにこの引数を省略すると、ブックに変更があった場合に例の「保存しますか?」というプロンプトが表示される仕様になっています。

コメント