あなたは共有サーバーのエクセルを開きっぱなしにしていて、別のメンバーから「閉じてよ」と言われて、慌てて閉じたことはありませんか?
逆に別のメンバーが開きっぱなしにしていて「閉じてよ」と言ったこともあるかもしれません。
お互い様な気がしますけど、エクセルだと使い方にもよりますが、誰かが開いていると、他の人は編集できないということがあります。
仕事をしていると、つい閉じるのを忘れてしまったり、入力中に電話がかかってきて対応に時間が取られてしまい、その間エクセル開きっぱなしになったり、すぐに閉じられないこともありますよね。
そんなとき、エクセル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