Note: The other languages of the website are Google-translated. Back to English

一定時間非アクティブになった後、ブックを保存して閉じるにはどうすればよいですか?

場合によっては、他の業務で長時間忙しいときに誤ってブックを閉じて、ブック内の重要なデータが失われることがあります。 ブックを一定時間非アクティブ化した場合に、ブックを自動的に保存して閉じるためのトリックはありますか?

VBAを使用して一定時間非アクティブになった後、ブックを自動保存して閉じます

矢印青い右バブル VBAを使用して一定時間非アクティブになった後、ブックを自動保存して閉じます

この問題を解決するための組み込み関数はExcelにありませんが、特定の時間非アクティブになった後にブックを保存して閉じるのに役立つマクロコードを導入できます。

1.自動的に保存して閉じるワークブックを有効にし、一定秒間非アクティブにした後に閉じます。 Altキー+ F11 開くキー アプリケーション向け Microsoft Visual Basic 窓。

2。 クリック インセット > モジュール を作成する モジュール スクリプトを作成し、以下のコードを貼り付けます。 スクリーンショットを参照してください:

Dim CloseTime As Date
Sub TimeSetting()
    CloseTime = Now + TimeValue("00:00:15")
    On Error Resume Next
    Application.OnTime EarliestTime:=CloseTime, _
      Procedure:="SavedAndClose", Schedule:=True
End Sub
Sub TimeStop()
    On Error Resume Next
    Application.OnTime EarliestTime:=CloseTime, _
      Procedure:="SavedAndClose", Schedule:=False
 End Sub
Sub SavedAndClose()
    ActiveWorkbook.Close Savechanges:=True
End Sub

 

非アクティブになった後、ドキュメントはワークブックを閉じる1

3.次に、 プロジェクトエクスプローラー ペイン、ダブルクリック このワークブック、および以下のコードをスクリプトの横に貼り付けます。 スクリーンショットを参照してください:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Call TimeStop
End Sub

Private Sub Workbook_Open()
    Call TimeSetting
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   Call TimeStop
   Call TimeSetting
End Sub

 

非アクティブになった後、ドキュメントはワークブックを閉じる2

4.手順2で挿入したモジュールをダブルクリックして、を押します。 F5 コードを実行するためのキー。 スクリーンショットを参照してください:
非アクティブになった後、ドキュメントはワークブックを閉じる3

5.次に、15秒後、ブックの保存を通知するダイアログがポップアップ表示され、[]をクリックします。 あり ブックを保存して閉じます。
非アクティブになった後、ドキュメントはワークブックを閉じる4

ヒント:

(1)最初のコードでは、次の文字列で非アクティブ時間を他に変更できます。 Now + TimeValue( "00:00:15")

(2)ブックをこれまでに保存したことがない場合は、 名前を付けて保存 最初にダイアログボックスが表示され、保存するように求められます。
非アクティブになった後、ドキュメントはワークブックを閉じる5


良い ワークシートを保護する

Excel用のKutools ワークシートを保護する 機能により、複数のシートまたはブック全体を一度にすばやく保護できます。
ドキュメントは複数のワークシートを保護します

最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300 以上の強力な機能. Office / Excel 2007-2021 および 365 をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 フル機能の 30 日間無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
officetab下部
コメントを並べ替える
コメント (11)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
セルがアクティブな場合、上記のコードは機能しません。 あれは

1.セルに値を入力します(EnterキーまたはTabキーを押さないでください)

2.Excelを最小限に抑えます。

この場合、コードは機能していません。
このコメントは、サイトのモデレーターによって最小化されました
クローズ時間に達した時点で別のワークブックで作業している場合は、非アクティブなワークブックではなく、そのワークブックが閉じられます。 これは、コードを次のように調整することで解決できます。

日付としての薄暗いCloseTime
文字列として薄暗いWKB
サブTimeSetting()
WKB = ActiveWorkbook.Name
CloseTime = Now + TimeValue( "00:00:15")
エラーで次の再開
Application.OnTime EarliestTime:= CloseTime、_
Procedure:= "SavedAndClose"、Schedule:= True
End Subの
サブTimeStop()
エラーで次の再開
Application.OnTime EarliestTime:= CloseTime、_
Procedure:= "SavedAndClose"、Schedule:= False
End Subの
Sub SavedAndClose()
Workbooks(WKB).Close Savechanges:= True
End Subの
このコメントは、サイトのモデレーターによって最小化されました
同じことに気づきました。 そして同じ解決策を見つけました:-)
このコメントは、サイトのモデレーターによって最小化されました
このコードが組み込まれているブックを開くと、「実行時エラー」が発生することがあります。 とにかく、このコードをより安定させるために、より適切に記述しますか?
このコメントは、サイトのモデレーターによって最小化されました
素晴らしい感謝
このコメントは、サイトのモデレーターによって最小化されました
こんにちは私はこのコードをこのコードで有効期限コードのような他のコードに挿入したいのですが....?
コードは...次のとおりです
プライベートサブWorkbook_Open()

日付として薄暗いexdate
Dim i As Integer

'ここで有効期限の値を変更してください!!!
anul =2019'年
ルナ=5'月
ziua =16'日

exdate = DateSerial(anul、luna、ziua)

日付>exdateの場合
MsgBox( "アプリケーション"&ThisWorkbook.Name& "の有効期限が切れました!"&vbNewLine&vbNewLine _
&"有効期限の設定日は次のとおりです:"&exdate& ":)"&vbNewLine&vbNewLine _
&「管理者に連絡してバージョンを更新してください!」)、vbCritical、ThisWorkbook.Name

Expired_file = ThisWorkbook.Path& "\"&ThisWorkbook.Name

エラー時GoToErrorHandler
ワークブック付き(ThisWorkbook.Name)
If .Path <> "" Then

.Saved = True
.ChangeFileAccess xlReadOnly

Expired_fileを強制終了します

'アドインおよびアンインストールアドインの場合は、アドインの名前を取得します
Application.Version>=12の場合Then
I = 5
それ以外の場合:i = 4
終了する場合

Right(ThisWorkbook.Name、i)= ".xlam"またはRight(ThisWorkbook.Name、i)=".xla"の場合
wbName = Left(ThisWorkbook.Name、Len(ThisWorkbook.Name)-i)
'アドインがインストールされている場合はアンインストールします
AddIns(wbName).InstalledThenの場合
AddIns(wbName).Installed = False
終了する場合
終了する場合

。選ぶ

終了する場合
最後に

サブを終了

終了する場合

'MsgBox( "You have"&exdate-Date& "Days left")
サブを終了

ErrorHandler:
MsgBox「ファイルの削除に失敗しました。」
サブを終了

End Subの
このコメントは、サイトのモデレーターによって最小化されました
クローズ時間に達した時点で別のワークブックで作業している場合は、非アクティブなワークブックではなく、そのワークブックが閉じられます。 これは、コードを次のように調整することで解決できます。-以下のコメントから修正およびテスト-次のコードを使用します。

「このワークブック」に入力してください

Private Sub Workbook_BeforeClose(Cancel As Boolean)
TimeStopを呼び出す
End Subの
プライベートサブWorkbook_Open()
TimeSettingを呼び出す
End Subの
Private Sub Workbook_SheetChange(ByVal Sh As Object、ByVal Target As Range)
TimeStopを呼び出す
TimeSettingを呼び出す
End Subの


「モジュール」に入る:

日付としての薄暗いCloseTime
サブTimeSetting()
CloseTime = Now + TimeValue( "00:10:00")
エラーで次の再開
Application.OnTime EarliestTime:= CloseTime、_
Procedure:= "SavedAndClose"、Schedule:= True
End Subの
サブTimeStop()
エラーで次の再開
Application.OnTime EarliestTime:= CloseTime、_
Procedure:= "SavedAndClose"、Schedule:= False
End Subの
Sub SavedAndClose()
ThisWorkbook.Close Savechanges:= True
End Subの


CloseTime = Now + TimeValue( "00:10:00")を変更することで時間設定を変更できます-これは10分に設定され、( "00:10:00")を任意の時間に変更すると機能します。
このコメントは、サイトのモデレーターによって最小化されました
何が起こったのかわかりませんが、このソリューションは機能しなくなりました。 これが私のために働いたこの解決策への修正です:

「」
Dim resetCount As Long

Public Sub Workbook_Open()
エラーで次の再開
xWB=ThisWorkbookを設定します
リセット回数 = 0
End Subの

Private Sub Workbook_SheetChange(ByVal Sh As Object、ByVal Target As Range)On Error Resume Next
リセット
End Subの

Sub Reset()On Error Resume Next
静的xCloseTime
resetCount<>0の場合
ThisWorkbook.Application.OnTime xCloseTime、 "SaveWork1"、Schedule:= False
リセットカウント = リセットカウント + 1
xCloseTime = DateAdd( "n"、15、Now)
ThisWorkbook.Application.OnTime xCloseTime、 "SaveWork1"、Schedule:= True


リセットカウント = リセットカウント + 1
xCloseTime = DateAdd( "n"、15、Now)
ThisWorkbook.Application.OnTime xCloseTime、 "SaveWork1"、Schedule:= True
終了する場合
End Subの
「」
これは同じSaveWork1を使用しています:
`` `` Sub SaveWork1()
Application.DisplayAlerts = False
ThisWorkbook.Save
ThisWorkbook.閉じる

Application.DisplayAlerts = True
End Subの

「」
このコメントは、サイトのモデレーターによって最小化されました
これは素晴らしい。 シートが閉じようとしていることをユーザーに警告し、タイマーをリセットするオプションをユーザーに提供するポップアップメッセージボックスを追加するためのヒントはありますか?
このコメントは、サイトのモデレーターによって最小化されました
編集したくなくて相談したいときでも、ファイルは閉じます。 閉じてはいけません。 セルを選択すると、カウントを再開する必要があります。 解決策は何ですか?
このコメントは、サイトのモデレーターによって最小化されました
編集したくなくて相談したいときでも、ファイルは閉じます。 閉じてはいけません。 セルを選択すると、カウントを再開する必要があります。 解決策は何ですか?
ここにはまだコメントが投稿されていません
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所

フォローする

著作権©の2009 - WWW。extendoffice.com。 | | 全著作権所有。 搭載 ExtendOffice。 | サイトマップ
MicrosoftおよびOfficeのロゴは、米国MicrosoftCorporationの米国およびその他の国における商標または登録商標です。
SectigoSSLで保護