サイトアイコン HIBISEI Blog

エクセルをタイマーで自動的に閉じるようにする方法

あなたは共有サーバーのエクセルを開きっぱなしにしていて、別のメンバーから「閉じてよ」と言われて、慌てて閉じたことはありませんか?

逆に別のメンバーが開きっぱなしにしていて「閉じてよ」と言ったこともあるかもしれません。

お互い様な気がしますけど、エクセルだと使い方にもよりますが、誰かが開いていると、他の人は編集できないということがあります。

仕事をしていると、つい閉じるのを忘れてしまったり、入力中に電話がかかってきて対応に時間が取られてしまい、その間エクセル開きっぱなしになったり、すぐに閉じられないこともありますよね。

そんなとき、エクセルVBAを使えば、エクセルを自動で閉じるようにもできます。

何も操作していないときに、一定時間で自動で閉じられれば、他の人を待たせることも減るので、いいですよね。

今回は「エクセルをタイマーで自動的に閉じるようにする方法」を紹介します。

エクセルをタイマーで自動的に閉じるようにする方法

エクセルをタイマーで自動的に閉じるようにする方法です。

マクロを作るときは、「開発」タブを使います。
開発タブが出ていない方は、下のリンク

マクロを作るときは、「開発」タブを使います。
開発タブが出ていない方は、下のリンクで出し方を紹介していますので、まずは準備をお願いします。
→エクセルで開発タブを表示する方法

1.alt + F11 を同時押し →ThisWorkbookをダブルクリック

alt + F11を同時押しし、ThisWorkbookをダブルクリックします。

2.コードを入力

コードを入力します。

エクセルを開いて5分間何も操作がなかったら、ファイルを閉じる、という意味です。

3.「挿入」タブをクリック →「標準モジュール」をクリック

次に、「挿入」タブをクリック →「標準モジュール」をクリックします。

4.「Module1」をダブルクリック →コードを入力

「Module1」をダブルクリックし、コードを入力します。

5.ファイルを閉じて、開きなおして確認

ファイルを閉じて、開きなおして確認します。

・・・5分後、タイマーで開いていたファイルが閉じました!

まとめ

エクセルをタイマーで自動的に閉じるようにする方法のまとめです。

1.alt + F11 を同時押し →ThisWorkbookをダブルクリック

2.コードを入力

3.「挿入」タブをクリック →「標準モジュール」をクリック

4.「Module1」をダブルクリック →コードを入力

5.ファイルを閉じて、開きなおして確認

これでファイルの閉じ忘れが減れば、メンバーの苦情やイライラも、ちょっとは解消しますね!

最後にコードの紹介です。

「ThisWorkbook」モジュールに貼るコード

Option Explicit

Private CloseTime As Date
Private Const IDLE_MINUTES As Double = 5 ' 5分で自動終了

' --- Excelを開いた時に監視を開始 ---
Private Sub Workbook_Open()
    ResetCloseTimer
End Sub

' --- ユーザーが操作したらタイマーをリセット ---
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    ResetCloseTimer
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    ResetCloseTimer
End Sub

' --- タイマーをセットまたはリセット ---
Private Sub ResetCloseTimer()
    On Error Resume Next
    Application.OnTime EarliestTime:=CloseTime, Procedure:="AutoCloseWorkbook", Schedule:=False
    CloseTime = Now + TimeSerial(0, IDLE_MINUTES, 0)
    Application.OnTime EarliestTime:=CloseTime, Procedure:="AutoCloseWorkbook", Schedule:=True
End Sub

' --- Excelを閉じるときにタイマーを解除 ---
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    Application.OnTime EarliestTime:=CloseTime, Procedure:="AutoCloseWorkbook", Schedule:=False
End Sub

標準モジュール(今回はModule1)に貼るコード

Public Sub AutoCloseWorkbook()
    On Error Resume Next
    Application.DisplayAlerts = False
    ThisWorkbook.Close SaveChanges:=True  ' 保存して閉じる
    Application.DisplayAlerts = True
End Sub
モバイルバージョンを終了