Excel 2010 でアイドル時間後に Excel スプレッドシートを保存して閉じる方法

Excel 2010 でアイドル時間後に Excel スプレッドシートを保存して閉じる方法

Excel 2010 を使用しています。その日の仕事を終えて退社したユーザーが共有ファイル サーバー上の Excel ブックを排他的に開いたままにしておくと、他のユーザーがブックを編集できなくなるという状況が発生しています。この問題を軽減するにはどうすればよいでしょうか。

答え1

この問題の推奨される解決策は、複数のユーザーが同時にExcelスプレッドシートを編集できるようにすることです。共有ワークブックについて詳細については、Excel ヘルプを参照してください。この方法の要点は、Excel のリボンの [校閲] タブに移動し、[変更] セクションの [ブックの共有] ボタンをクリックすることです。

ぜひ、「共有ワークブック」機能を主な解決策として使用してみてください。共有ワークブックをすでに試したが、ニーズを満たすことができない場合にのみ、以下をお読みください。

何らかの理由でそれがうまくいかない場合(特定のワークブックの機能が共有ワークブックと互換性がないなど)、これを試してください。VBAソリューション:


私の意見では、データ保護の観点から、これは最も賢明ではない行為です。

ユーザーが誤って大量のデータを削除してしまい、どうしたらいいのか、いつ告白すればいいのかと頭を抱えて悩んでいる状況を想像してみてください。変更を保存せずにワークブックを閉じるだけで問題は解決することはわかっていますが、次のステップを検討しているときにこのコードが実行され、非常に困った状況に陥ることになります。そうは言っても、これを試してみてください:-

ALT+F11 を押して VB エディターを開きます。「ThisWorkbook」をダブルクリックし、最初の 2 つのモジュールを右側に貼り付けます。

Private Sub Workbook_Open()
    StartTimer
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    StartTimer
End Sub

次に、「ThisWorkbook」を右クリックしてモジュールを挿入し、このコードを貼り付けます。ワークブックを保存して閉じ、再度開くと、15 分間アイドル状態が続くと自動的に保存されて閉じます。

Const idleTime = 900 'seconds
Dim Start
Sub StartTimer()
    Start = Timer
    Do While Timer < Start + idleTime
        DoEvents
    Loop
    Application.DisplayAlerts = False
    ActiveWorkbook.Close SaveChanges:=True
    Application.DisplayAlerts = True
End Sub

関連情報