エクセルを自動で閉じる方法【制限時間を設けるVBAの導入】
エクセルを自動で閉じるVBAの導入方法について詳しくご紹介します。
エクセルを自動で閉じるVBAを導入すると以下のような効果を得ることができます。
「読み取り専用」になる心配がない
エクセルを閉じ忘れても安心
制限時間を決めることで仕事にメリハリがでる
複数人が共有されたエクセルファイルを編集するときに便利なVBAです。記事の最後で解説している「時間が経過するとエクセルが自動で閉じるVBA」をダウンロードすることができます。是非ダウンロードして使ってみてください。
エクセルを自動で閉じるVBAとは
指定した時間が経過するとエクセルを自動で閉じることができます。VBAは以下の流れで動作していきます。
エクセルを開いたときに制限時間のカウントダウンがスタート
残り時間がわかるようにカウントダウンタイマーを表示
制限時間の設定は簡単に変更可能に
カウントダウンタイマーに一時停止機能を搭載
タイマーがゼロになると「上書き保存」をして閉じる
制限時間を設定するVBA、カウントダウンタイマーを表示するVBAなどが導入されていて難しい!と感じるかもしれませんが、VBAを一つ一つ分けて考えてみると、さほど難しいVBAは使われていません。
エクセルを自動で閉じるVBAの導入方法
1.様式を作成する
A4セル・・・「時」
C4セル・・・「分」
E4セル・・・「秒」
2.VBAを起動
3.標準無ジュールにVBAを記入
4.サンプルVBA
サンプルVBA①
Sub Timer()
Dim L As Date, cnt As Double
L = DateAdd("h", Range("A4"), Time)
L = DateAdd("n", Range("C4"), L)
L = DateAdd("s", Range("E4"), L)
rng = 0
UserForm1.Show vbMoeless
Do
cnt = DateDiff("s", Time, L) + rng
UserForm1.TextBox1 = Format(TimeSerial(0, 0, cnt), "hh:nn:ss")
If UserForm1.TextBox1 = "00:00:00" Then Exit Do
DoEvents
Loop
Call CloseMe
End Sub
サンプルVBA②
Sub CloseMe()
ActiveWorkbook.Save
ThisWorkbook.Saved = True
If Workbooks.Count <= 1 Then
Application.Quit
Else
ThisWorkbook.Close False
End If
End Sub
5.sheet1にVBAを記入
6.サンプルVBA
サンプルVBA③
Private Sub WorkSheet_Activate()
UserForm1.Show vbModeless
End Sub
7.ユーザーフォームの作成
8.ユーザーフォームにVBAを記入
9.サンプルVBA
サンプルVBA④
Private Sub CommandButton1_Click()
Dim rng_t As Date
rng_t = Time
MsgBox ("タイマーがストップされました" & vbCrLf & "再開するには「OK」を押してください")
rng = rng + DateDiff("s", rng_t, Time)
End Sub
10.ユーザーフォームの表示設定
11.ワークブックにVBAを記入
12.サンプルVBA
サンプルVAB⑤
Private Sub Workbook_Open()
Call Timer
End Sub
13.VBAの実行
入力する数字を変更すると、エクセルを閉じるまでの制限時間が変更されます。
エクセルを自動で閉じるVBAに設定された機能
エクセルを自動で閉じるVBAには強制的にエクセルを閉じる処理を行うので、トラブルが発生する可能性があります。一番考えられるトラブルが、「重要なデータ整理を行っているときにエクセルが閉じる」ということです。
VBAには上記のようなトラブルを回避するための設定が施されています。
作業中のエクセルを上書き保存する
複数のエクセルを開いているとき、エクセルは閉じない(現状維持させる)
開いているエクセルが一つだけのとき閉じるを実行する
上記の条件を設定しておけば、制限時間で閉じるという処理をしてもトラブルが発生する心配はありません。
エクセルを自動で閉じるVBAのダウンロード
上記で紹介している「時間が経過するとエクセルが自動で閉じるVBA」をダウンロードしてお使いいただけます。
気になる方は是非使ってみてください。
この記事が気に入ったらチップで応援してみませんか?