「しまった!Excelファイルを保存し忘れて閉じてしまった…」
「誰かが共有ファイルを開きっぱなしにしてて編集できない!」
こんな経験ないですか?
特に多くのファイルを扱う業務では、保存や終了の管理が煩雑になりがちですよね…
この記事では、VBA初心者や非エンジニアの方でもコピペで簡単に実装できる、「Excelブックを開いてから3分後に自動保存→アプリケーション終了するVBAコード」をご紹介します。
このコードを使えば、ファイルの保存忘れや不要なExcelプロセスの残留を防ぎ、業務効率化の第一歩を踏み出すことができますよ。
働き方改革が叫ばれる今、このような小さな自動化の積み重ねが、
時間だ!答えを聞こう!
Contents
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
コードの設置場所(貼り付け方)
- Alt + F11 キーを押してVBEを開く。
- 左側の「プロジェクト」ウィンドウから、ThisWorkbook をダブルクリックする。
- 開いたコードウィンドウに、上記のコードを貼り付ける。
コードの解説
それでは、それぞれのコードが何をしているのか、詳しく説明します。
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を使えば日々の定型業務を自動化し、ミスを減らすことができます。
閉じ忘れを防止したいエクセルファイルがあれば、実装してみてください!


コメントを残す