【ファイルの閉じ忘れ防止策】Excel を一定時間後に自動終了|Excelトラブル110番 #01

スポンサーリンク
Excelの部屋
うっしー
うっしー

この記事は、Excel で業務効率化ツールを作成・運用している際に発生したトラブルと、その解決策をまとめたシリーズ記事です。

私は業務効率化のために便利な Excel ツールを作成・活用していますが、最近“思わぬ落とし穴”に気づいたのです。

それは……

Excel ファイルの「閉じ忘れ」によって、他の人が開いた際に「読み取り専用」になってしまい、追記できなくなるという問題。

さらに驚くべき事実も判明しました。

なんと、Excel を長時間開いたままにして、仕事をしているフリをする不届き者が現れたのです!

せっかく作った業務効率化ツールも、この状況を放置していては本来の効果を発揮できません。

そこで私は、この問題をスマートに解決できる方法を考えました。

その答えが、「一定時間が経過したら Excel を自動で閉じる」設定です。

この記事では、この設定方法を初心者にもわかりやすく解説していきます。

【この記事で分かること】

  • 共有ファイルで起こるトラブル
  • Excel を自動で閉じる設定方法

スポンサーリンク

共有ファイルで起きる“読み取り専用”トラブルとは?

Excel ファイルは、クラウドや社内ネットワークフォルダなどの共有可能な場所に保存することで、アクセスを許可されたPCから編集できるようになります。

しかし、誰かが Excel ファイルを開いていると、他の人が同じファイルを開こうとしたときに「読み取り専用」と表示され、編集内容を保存することができない状態で開かれます。

これが「読み取り専用」になります。

「読み取り専用」で開かれたファイルは入力も可能ですが、保存する際に「コピー+”ファイル名”」という名前になり上書きすることができません。

つまり、複数人で共有している Excel ファイルを誰かが開いたままにしていると、「読み取り専用」となり編集ができず業務が滞るという訳です。

ゆー
ゆー

Excel 開きっぱなしにしてるのは誰!?

ちょっと入力したいだけなのに……

スポンサーリンク

Excel を自動で閉じる! VBA 設定の基本手順

Excel を一定時間で自動的に閉じるには「VBA:Visual Basic for Applications」を使用します。

VBA は、Microsoft が開発したプログラミング言語「Visual Basic」をベースに、Excel や Word などの Office アプリケーション内で動作するように最適化された言語です。

VBA を使って「繰り返し作業の自動化」や「複雑な処理の簡略化」などのプログラム(マクロという)を作ることで、実にさまざまなことが可能となります。

【ファイルの保存形式を「xlsx」から「xlsm」へ変更】

マクロを使うためには、ファイルの種類を「xlsm(:Excel マクロ有効ブック)」で保存する必要があります。

Excel ファイルの種類を xlsm にする手順

  1. 使用する Excel ファイルが既にある場合は、そのファイルを開く。
  2. 「F12」キーを押して、「名前を付けて保存」のウィンドウを開く。
  3. ファイルの種類(T)から「Excel マクロ有効ブック」を選択して保存。
Excel マクロ有効ブックの選択方法の画像
ファイルの種類を選択
うっしー
うっしー

使用するファイルが新規作成(まだ保存したことがない状態)の場合、保存する時にファイルの種類(T)から「Excel マクロ有効ブック」を選択して保存しましょう。

【開発タブの表示】

開発タブがない・表示方法がわからない方は下の記事を参考にしてください。

【エディター(VBE:Visual Basic Editor)を開く】

エディターを開く手順

  1. 開発タブを選択
  2. Visual Basic を選択し BVE を開く。
    (「Alt + F11」でも VBE を開けます。)
開発タブからVisual Basicを選択
開発タブからVisual Basicを選択

【 ThisWorkbook へコードを入力】

ThisWorkbook へコードを入力する手順

VBE(エディター)の左側にある「ThisWorkbook」を選択します。

ThisWorkbookを選択
ThisWorkbookを選択

ThisWorkbook の右側に表示されているウィンドウ(コードウィンドウ)に、下のコードをコピー&ペイストします。

Private Sub Workbook_Open()
Application.OnTime Now + TimeValue(“00:10:00”), “AutoClose”
End Sub

ThisWorkbookのコードウィンドウにコードを貼り付け
ThisWorkbookのコードウィンドウにコードを貼り付け
うっしー
うっしー

(“00:10:00“)はそれぞれ(“::“)に対応しています。

設定は「Excel ファイルを開いて10分後に閉じる」ですが、閉じるまでの時間は数字を変更すれば任意で設定することができます。

【標準モジュールの追加と補助コードの入力】

標準モジュールの追加と補助コードの入力手順

BVE の挿入タブから「標準モジュール(M)」を選択し、モジュールを追加します。

標準モジュールの追加
標準モジュールの追加

追加したモジュールが開いていることを確認し、補助コードを入力します。

追加したモジュールと補助コード入力欄
追加したモジュールと補助コード入力欄

コードウィンドウ(補助コードを入力する欄)に下のコードをコピー&ペイストします。

Sub AutoClose()
ThisWorkbook.Close SaveChanges:=True
End Sub

Module1へ補助コードを貼り付け
Module1へ補助コードを貼り付け
うっしー
うっしー

設定は「Excel を保存して閉じる」ですが、

SaveChanges:=True

SaveChanges:=False

にすると「Excel を保存しないで閉じる」へ変更できます。

スポンサーリンク

【応用編】非アクティブな場合のみ閉じる方法

ここまでは、Excel ファイルを開いてから一定時間経過後に自動で閉じる設定を行ってきましたが、「作業中なのに閉じられたら困る!」という場合もあることでしょう。

そこで、応用編として「操作していない(非アクティブ)時間を検知して閉じる」設定も解説していきます。

【ThisWorkbook】へ入力

Private Sub Workbook_Deactivate()
deactivateTime = Timer
If Not checkTimerScheduled Then
checkTimerScheduled = True
Application.OnTime Now + TimeValue(“00:00:30”), “CheckAutoClose”
End If
End Sub

Private Sub Workbook_Activate()
checkTimerScheduled = False
End Sub

【標準モジュール】へ入力

Public deactivateTime As Double
Public checkTimerScheduled As Boolean

Public Sub CheckAutoClose()
If Not ThisWorkbook.Windows(1).Visible Then Exit Sub
If Not checkTimerScheduled Then Exit Sub
If Timer – deactivateTime >= 60 Then
ThisWorkbook.Save
Application.Quit
Else
Application.OnTime Now + TimeValue(“00:00:30”), “CheckAutoClose”
End If
End Sub

うっしー
うっしー

この設定は……

  1. 設定を行った Excel ファイル非アクティブ(他の Excel ファイルを使用中)であることを30秒ごとに自動でチェック
  2. 非アクティブ状態が確認されると、1分後に「設定を行った Excel ファイル保存して閉じる設定となっています。
スポンサーリンク

まとめ|VBAで業務効率化!自動終了でトラブル防止

Excel を閉じ忘れて「読み取り専用」になる問題は、共有ファイルを使用すると誰もが一度は経験するストレスです。

でも、マクロを使えば、そんな悩みもスマートに回避できます。

  • 読み取り専用トラブルは意外と簡単に回避できる
  • VBAを活用すれば放置対策としてファイル自動終了が可能
  • 初心者でも安心して導入できるシンプルコード
  • 応用編でさらに安全性・効率性をアップ

「うちの職場にも導入したい!」と思った方は、ぜひこの設定を試してみてください。

コメント