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

Cum se salvează și se închide registrul de lucru după inactivitate pentru o anumită perioadă de timp?

În anumite momente, este posibil să închideți accidental un registru de lucru atunci când sunteți ocupat cu alte probleme pentru o lungă perioadă de timp, ceea ce poate pierde unele date importante din registrul de lucru. Există trucuri pentru a salva și închide automat registrul de lucru dacă l-ați dezactivat pentru o anumită perioadă de timp?

Salvarea automată și închiderea registrului de lucru după inactivitate pentru o anumită perioadă de timp cu VBA

săgeată albastru dreapta balon Salvarea automată și închiderea registrului de lucru după inactivitate pentru o anumită perioadă de timp cu VBA

Nu există nicio funcție încorporată în Excel pentru a rezolva această problemă, dar pot introduce un cod macro care vă poate ajuta să salvați și să închideți registrul de lucru după inactivitate într-un anumit timp.

1. Activați registrul de lucru pe care doriți să îl salvați și să îl închideți automat după inactivitate pentru anumite secunde și apăsați Alt + F11 tastele pentru a deschide Microsoft Visual Basic pentru aplicații fereastră.

2. clic Insera > Module pentru a crea un Module script și lipiți codul de mai jos pe acesta. Vedeți captura de ecran:

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

 

doc salvează închiderea registrului de lucru după inactivitate 1

3. Apoi în Explorator de proiecte , faceți dublu clic Acest registru de lucru, și lipiți codul de mai jos pe scriptul de lângă. Vedeți captura de ecran:

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

 

doc salvează închiderea registrului de lucru după inactivitate 2

4. Mergeți la dublu clic pe modulul pe care l-ați introdus la pasul 2 și apăsați F5 tasta pentru a rula codul. Vedeți captura de ecran:
doc salvează închiderea registrului de lucru după inactivitate 3

5. Apoi, după 15 secunde, apare un dialog pentru a vă reaminti salvarea registrului de lucru și faceți clic pe Da pentru a salva și a închide registrul de lucru.
doc salvează închiderea registrului de lucru după inactivitate 4

Sfat:

(1) În primul cod, puteți schimba timpul de inactivitate la altul din acest șir: Now + TimeValue („00:00:15”)

(2) Dacă nu ați salvat niciodată registrul de lucru înainte, fișierul Salvare ca caseta de dialog va apărea mai întâi și vă va cere să o salvați.
doc salvează închiderea registrului de lucru după inactivitate 5


bine Protejați foaia de lucru

Kutools pentru Excel Protejați foaia de lucru funcția poate proteja rapid mai multe foi sau întregul registru de lucru simultan.
doc protejează mai multe foi de lucru

Cele mai bune instrumente de productivitate Office

Kutools pentru Excel vă rezolvă majoritatea problemelor și vă crește productivitatea cu 80%

  • reutilizarea: Introduceți rapid formule complexe, diagrame și orice ai folosit anterior; Criptați celulele cu parola; Creați o listă de corespondență și trimiteți e-mailuri ...
  • Super Formula Bar (editați cu ușurință mai multe linii de text și formulă); Layout de citire (citiți și editați cu ușurință un număr mare de celule); Lipiți la interval filtrat...
  • Merge celule / rânduri / coloane fără a pierde date; Conținut de celule divizate; Combinați rânduri / coloane duplicate... Prevenirea celulelor duplicate; Comparați gamele...
  • Selectați Duplicat sau Unic Rânduri; Selectați Rânduri goale (toate celulele sunt goale); Super Find și Fuzzy Find în multe cărți de lucru; Selectare aleatorie ...
  • Copie exactă Mai multe celule fără modificarea referinței formulelor; Creați automat referințe la foi multiple; Introduceți gloanțe, Casete de selectare și multe altele ...
  • Extrageți textul, Adăugați text, eliminați după poziție, Eliminați spațiul; Creați și imprimați subtotaluri de paginare; Convertiți conținutul dintre celule și comentarii...
  • Super Filtru (salvați și aplicați scheme de filtrare altor foi); Sortare avansată după lună / săptămână / zi, frecvență și multe altele; Filtru special cu bold, italic ...
  • Combinați cărți de lucru și foi de lucru; Merge Tables pe baza coloanelor cheie; Împărțiți datele în mai multe foi; Conversia în loturi xls, xlsx și PDF...
  • Peste 300 de funcții puternice. Suportă Office / Excel 2007-2021 și 365. Acceptă toate limbile. Implementare ușoară în întreprinderea sau organizația dvs. Funcții complete Probă gratuită de 30 de zile. Garanție de returnare a banilor de 60 de zile.
fila kte 201905

Fila Office aduce interfața cu file în Office și vă face munca mult mai ușoară

  • Activați editarea și citirea cu file în Word, Excel, PowerPoint, Publisher, Access, Visio și Project.
  • Deschideți și creați mai multe documente în filele noi ale aceleiași ferestre, mai degrabă decât în ​​ferestrele noi.
  • Vă crește productivitatea cu 50% și reduce sute de clicuri de mouse pentru dvs. în fiecare zi!
fundul officetab
Comentarii (11)
Încă nu există evaluări. Fii primul care evaluează!
Acest comentariu a fost redus la minimum de moderatorul de pe site
Codul de mai sus nu funcționează când o celulă este activă. Acesta este

1. introduceți o valoare în celulă (nu apăsați Enter sau tab)

2. minimizați excel.

În acest caz, codul nu funcționează.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Dacă lucrați într-un registru de lucru separat în punctul în care este atins ora de închidere, atunci acesta va închide acel registru de lucru și nu cel inactiv. Acest lucru poate fi rezolvat prin ajustarea codului la:

Dim CloseTime As Data
Dim WKB ca șir
Sub TimeSetting()
WKB = ActiveWorkbook.Name
CloseTime = Acum + TimeValue("00:00:15")
La data de eroare CV următoare
Application.OnTime EarliestTime:=CloseTime, _
Procedure:="SavedAndClose", Schedule:=True
End Sub
Sub TimeStop()
La data de eroare CV următoare
Application.OnTime EarliestTime:=CloseTime, _
Procedure:="SavedAndClose", Schedule:=False
End Sub
Sub SavedAndClose()
Workbooks(WKB).Close Savechanges:=Adevărat
End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Am observat același lucru. Si am gasit aceeasi solutie :-)
Acest comentariu a fost redus la minimum de moderatorul de pe site
Întâlnesc uneori o „Eroare de timp de rulare” când deschid registrul de lucru care are acest cod încorporat. Oricum, pentru a scrie acest cod mai bine pentru a fi mai stabil?
Acest comentariu a fost redus la minimum de moderatorul de pe site
strălucire mulțumesc
Acest comentariu a fost redus la minimum de moderatorul de pe site
Bună, vreau să inserez acest cod într-un alt cod, cum ar fi codul de expirare, cu acest cod. Cum pot face...?
codul este... urmeaza
Private Sub Workbook_Open()

Dim exdate As Date
Dim i Integer

„Modificați aici valorile pentru data de expirare!!!
anul = 2019 'an
luna = 5 'lună
ziua = 16 'day

exdate = DateSerial(anul, luna, ziua)

Dacă Data > exdate Atunci
MsgBox ("Aplicația " & ThisWorkbook.Name & " a expirat !" & vbNewLine & vbNewLine _
& „Data de configurare a expirării este: „ & exdate & „ :)” & vbNewLine & vbNewLine _
& „Contactați administratorul pentru a reînnoi versiunea !”), vbCritical, ThisWorkbook.Name

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

La eroare GoTo ErrorHandler
Cu registre de lucru (ThisWorkbook.Name)
Dacă .Cale <> "" Atunci

.Salvat = Adevărat
.ChangeFileAccess xlReadOnly

Omoara expired_file

'Obține numele adiționalului dacă este addn și uninstall addn
Dacă Application.Version >= 12 Atunci
i = 5
Altfel: i = 4
Final, dacă

Dacă Right(ThisWorkbook.Name, i) = „.xlam” Sau Right(ThisWorkbook.Name, i) = „.xla” Atunci
wbName = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - i)
'dezinstalați addn dacă este instalat
Dacă AddIns(wbName).Instalat Atunci
AddIns(wbName).Installed = False
Final, dacă
Final, dacă

.Închide

Final, dacă
Se termina cu

Ieșiți din Sub

Final, dacă

„MsgBox („Aveți „ & exdate - Data și „Zile rămase”)
Ieșiți din Sub

ErrorHandler:
MsgBox „Ștergerea fișierului nu a reușit..”
Ieșiți din Sub

End Sub
Acest comentariu a fost redus la minimum de moderatorul de pe site
Dacă lucrați într-un registru de lucru separat în punctul în care este atins ora de închidere, atunci acesta va închide acel registru de lucru și nu cel inactiv. Acest lucru poate fi rezolvat prin ajustarea codului la: - corectat și testat din comentariul de mai jos - utilizați acest cod:

Intrați în „Acest registru de lucru”

Private Sub Workbook_BeforeClose(Anulați ca boolean)
Apelați TimeStop
End Sub
Private Sub Workbook_Open()
Setare oră apel
End Sub
Private Sub Workbook_SheetChange(ByVal Sh ca obiect, ByVal Target ca interval)
Apelați TimeStop
Setare oră apel
End Sub


Intrați în „modul”:

Dim CloseTime As Data
Sub TimeSetting()
CloseTime = Acum + TimeValue("00:10:00")
La data de eroare CV următoare
Application.OnTime EarliestTime:=CloseTime, _
Procedure:="SavedAndClose", Schedule:=True
End Sub
Sub TimeStop()
La data de eroare CV următoare
Application.OnTime EarliestTime:=CloseTime, _
Procedure:="SavedAndClose", Schedule:=False
End Sub
Sub SavedAndClose()
ThisWorkbook.Close Savechanges:=Adevărat
End Sub


puteți modifica setarea orei schimbând CloseTime = Now + TimeValue("00:10:00") - aceasta este setata la 10 minute, schimbați ("00:10:00") la orice oră doriți și funcționează.
Acest comentariu a fost redus la minimum de moderatorul de pe site
Nu sunt sigur ce s-a întâmplat, dar această soluție nu mai funcționează. Iată remedierea acestei soluții care a funcționat pentru mine:

````
Dim resetCount As Long

Public Sub Workbook_Open()
La data de eroare CV următoare
Setați xWB = ThisWorkbook
resetCount = 0
End Sub

Private Sub Workbook_SheetChange(ByVal Sh ca obiect, ByVal țintă ca interval)On Error Reluare Următorul
Reseteaza
End Sub

Sub Reset()On Error Reluare Următorul
Static xCloseTime
Dacă resetCount <> 0, atunci
ThisWorkbook.Application.OnTime xCloseTime, „SaveWork1”, Schedule:=False
resetCount = resetCount + 1
xCloseTime = DateAdd("n", 15, Acum)
ThisWorkbook.Application.OnTime xCloseTime, „SaveWork1”, Schedule:=True

Altfel
resetCount = resetCount + 1
xCloseTime = DateAdd("n", 15, Acum)
ThisWorkbook.Application.OnTime xCloseTime, „SaveWork1”, Schedule:=True
Final, dacă
End Sub
````
Acesta folosește același SaveWork1 As:
````Sub SaveWork1()
Application.DisplayAlerts = Fals
Acest registru de lucru.Salvați
Acest caiet de lucru.Închidere

Application.DisplayAlerts = Adevărat
End Sub

````
Acest comentariu a fost redus la minimum de moderatorul de pe site
Asta e super. Sfaturi despre adăugarea unei casete de mesaj pop-up care să avertizeze utilizatorul că foaia este pe cale să se închidă și să le ofere opțiunea de a reseta cronometrul?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Când nu vreau să editez și vreau doar să consult, fișierul încă se închide. Nu ar trebui să se închidă. Ar trebui să reia numărătoarea când selectez celule. Care este solutia?
Acest comentariu a fost redus la minimum de moderatorul de pe site
Când nu vreau să editez și vreau doar să consult, fișierul încă se închide. Nu ar trebui să se închidă. Ar trebui să reia numărătoarea când selectez celule. Care este solutia?
Nu există comentarii postate aici încă
Lăsa comentarii
Postare ca invitat
×
Evaluează această postare:
0   Caractere
Locații sugerate

Urmărește-ne

Copyright © 2009 - www.extendoffice.com. | Toate drepturile rezervate. Cu sprijinul ExtendOffice. | Harta site-ului
Microsoft și sigla Office sunt mărci comerciale sau mărci comerciale înregistrate ale Microsoft Corporation în Statele Unite și / sau în alte țări.
Protejat de Sectigo SSL