【VBA】自動保存してExcelを閉じるコード!業務効率化の第一歩【3分間だけ待ってやる】

「しまった!Excelファイルを保存し忘れて閉じてしまった…」
「誰かが共有ファイルを開きっぱなしにしてて編集できない!」

こんな経験ないですか?
特に多くのファイルを扱う業務では、保存や終了の管理が煩雑になりがちですよね…

この記事では、VBA初心者や非エンジニアの方でもコピペで簡単に実装できる、「Excelブックを開いてから3分後に自動保存→アプリケーション終了するVBAコード」をご紹介します。

このコードを使えば、ファイルの保存忘れや不要なExcelプロセスの残留を防ぎ、業務効率化の第一歩を踏み出すことができますよ。
働き方改革が叫ばれる今、このような小さな自動化の積み重ねが、
時間だ!答えを聞こう!

VBAコード

では早速、コードの全体像を見てみましょう。
以下のコードをコピーして、お使いのExcelファイルのVBE(Visual Basic Editor)に貼り付けます。(貼り付け方はこの後紹介)

1 Private Sub Workbook_Open()
2 ‘ 40秒後に行う処理を予約
3 Application.OnTime Now + TimeValue(“00:03:00”), “SaveAndClose”
4 End Sub
5
6 Sub SaveAndClose()
7 ‘ このブックを保存
8 ThisWorkbook.Save
9 ‘ Excelアプリケーションを終了
10 Application.Quit
11 End Sub

コードの設置場所(貼り付け方)

  1. Alt + F11 キーを押してVBEを開く。
  2. 左側の「プロジェクト」ウィンドウから、ThisWorkbook をダブルクリックする。
  3. 開いたコードウィンドウに、上記のコードを貼り付ける。

コードの解説

それでは、それぞれのコードが何をしているのか、詳しく説明します。

  • Private Sub Workbook_Open()
    • これは、Excelブックが開かれたときに自動的に実行される特別なプロシージャです。イベントプロシージャと呼ばれます。
    • この中に処理を書くことで、「ファイルを開いたとき」をトリガーにしてVBAを動かすことができます。
  • Application.OnTime Now + TimeValue("00:03:00"), "SaveAndClose"
    • Application.OnTime は、指定した時刻に特定の処理(マクロ)を実行させるための命令です。
    • Now は、現在の日時を取得します。
    • TimeValue(“00:03:00″) は、3分という時間を表しています。”時:分:秒” の形式で指定します。つまり、Now + TimeValue(“00:03:00”) で「今から3分後」という時刻を計算しています。
    • “SaveAndClose” は、実行したいマクロ(プロシージャ)の名前です。
    • 全体として、「今から3分後に、SaveAndCloseという名前のマクロを実行してください」という予約をしています。
  • Sub SaveAndClose()
    • 予約によって実行される処理の本体です。
  • ThisWorkbook.Save
    • ThisWorkbook は、このVBAコードが書かれているExcelブックそのものを指します。
    • .Save は、そのブックを上書き保存する命令です。
  • Application.Quit
    • Excelアプリケーション全体を終了する命令です。もし他にExcelファイルを開いている場合、それらもまとめて終了するので注意が必要です。

簡単なアレンジコード

コードの意味が分かったら、自分好みにアレンジしてみましょう。

アレンジ1: 時間を変更する

3分という時間は自由に変更できます。
例えば、40秒後に設定したい場合は、TimeValueの部分を以下のように書き換えます。

1 ‘ 変更前
2 Application.OnTime Now + TimeValue(“00:03:00”), “SaveAndClose”
3
4 ‘ 変更後(40秒後に設定)
5 Application.OnTime Now + TimeValue(“00:00:40”), “SaveAndClose”

アレンジ2: Excelを終了せず、ブックだけを閉じる

他のExcelファイルで作業をしている途中で、アプリケーションごと終了してしまうと困る場合があります。
その場合は、Application.Quit を ThisWorkbook.Closeに変更しましょう。これにより、指定したブックだけが保存されて閉じられます。

1 ‘ 変更前のプロシージャ
2 Sub SaveAndClose()
3 ThisWorkbook.Save
4 Application.Quit
5 End Sub
6
7 ‘ 変更後のプロシージャ
8 Sub SaveAndClose()
9 ‘ ブックを保存して閉じる
10 ThisWorkbook.Close SaveChanges:=True
11 End Sub

SaveChanges:=True は、保存してから閉じる、という明示的な指定です。
ThisWorkbook.Save を省略できるため、コードがよりシンプルになります。

このように、VBAを使えば日々の定型業務を自動化し、ミスを減らすことができます。
閉じ忘れを防止したいエクセルファイルがあれば、実装してみてください!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です