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

Come salvare e chiudere la cartella di lavoro dopo l'inattività per un certo periodo di tempo?

In alcuni casi, potresti chiudere accidentalmente una cartella di lavoro quando sei impegnato con altri affari per un lungo periodo che potrebbe perdere alcuni dati importanti nella cartella di lavoro. Esistono trucchi per salvare e chiudere automaticamente la cartella di lavoro se l'hai disattivata per un certo periodo di tempo?

Salvataggio automatico e chiusura della cartella di lavoro dopo inattività per un certo periodo di tempo con VBA


freccia blu freccia destra Salvataggio automatico e chiusura della cartella di lavoro dopo inattività per un certo periodo di tempo con VBA

Non esiste una funzione integrata in Excel per risolvere questo problema, ma posso introdurre un codice macro che può aiutarti a salvare e chiudere la cartella di lavoro dopo l'inattività in un certo tempo.

1. Abilitare la cartella di lavoro che si desidera salvare automaticamente e chiudere dopo inattività per alcuni secondi e premere Alt + F11 chiavi per aprire Microsoft Visual Basic, Applications Edition finestra.

2. Clic inserire > Modulo creare un Modulo script e incolla il codice sottostante. Vedi screenshot:

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 salva chiudi cartella di lavoro dopo inattività 1

3. Quindi in Esplora progetti riquadro, fare doppio clic Questa cartella di lavoroe incolla il codice sottostante nello script accanto. Vedi screenshot:

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 salva chiudi cartella di lavoro dopo inattività 2

4. Fare doppio clic sul modulo inserito al passaggio 2 e premere F5 chiave per eseguire il codice. Vedi screenshot:
doc salva chiudi cartella di lavoro dopo inattività 3

5. Quindi, dopo 15 secondi, viene visualizzata una finestra di dialogo per ricordare di salvare la cartella di lavoro e fare clic per salvare e chiudere la cartella di lavoro.
doc salva chiudi cartella di lavoro dopo inattività 4

Suggerimenti:

(1) Nel primo codice, puoi modificare il tempo di inattività in altro in questa stringa: Now + TimeValue ("00:00:15")

(2) Se non hai mai salvato la cartella di lavoro prima, il file Salva con nome la finestra di dialogo verrà visualizzata per prima e ti chiederà di salvarla.
doc salva chiudi cartella di lavoro dopo inattività 5


buono Proteggi foglio di lavoro

Kutools per Excel Proteggi foglio di lavoro la funzione può proteggere rapidamente più fogli o l'intera cartella di lavoro contemporaneamente.
doc protegge più fogli di lavoro

I migliori strumenti per la produttività in ufficio

Kutools per Excel risolve la maggior parte dei tuoi problemi e aumenta la tua produttività dell'80%

  • Riutilizzo: Inserisci rapidamente formule complesse, grafici e tutto ciò che hai usato prima; Crittografa celle con password; Crea mailing list e invia email ...
  • Bar Super Formula (modifica facilmente più righe di testo e formula); Layout di lettura (leggi e modifica facilmente un gran numero di celle); Incolla su intervallo filtrato...
  • Unisci celle / righe / colonne senza perdere dati; Contenuto delle celle divise; Combina righe / colonne duplicate... Impedisci celle duplicate; Confronta intervalli...
  • Seleziona Duplica o Unico Righe; Seleziona Righe vuote (tutte le celle sono vuote); Super Find e Fuzzy Find in molte cartelle di lavoro; Selezione casuale ...
  • Copia esatta Più celle senza modificare il riferimento della formula; Riferimenti di creazione automatica a più fogli; Inserisci punti elenco, Caselle di controllo e altro ...
  • Estrai testo, Aggiungi testo, Rimuovi per posizione, Rimuovi spazio; Creare e stampare totali parziali di paging; Converti contenuto e commenti tra celle...
  • Super filtro (salva e applica schemi di filtri ad altri fogli); Ordinamento avanzato per mese / settimana / giorno, frequenza e altro; Filtro speciale in grassetto, corsivo ...
  • Combina cartelle di lavoro e fogli di lavoro; Unisci tabelle in base a colonne chiave; Suddividi i dati in più fogli; Conversione in batch xls, xlsx e PDF...
  • Più di 300 potenti funzionalità. Supporta Office / Excel 2007-2019 e 365. Supporta tutte le lingue. Facile distribuzione nella tua azienda o organizzazione. Funzionalità complete Prova gratuita di 30 giorni. Garanzia di rimborso di 60 giorni.
scheda kte 201905

Scheda Office porta l'interfaccia a schede a Office e semplifica notevolmente il lavoro

  • Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Apri e crea più documenti in nuove schede della stessa finestra, piuttosto che in nuove finestre.
  • Aumenta la produttività del 50% e riduce centinaia di clic del mouse ogni giorno!
fondo officetab
Commenti (11)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
Il codice sopra non funziona quando una cella è attiva. Questo è

1. inserisci un valore nella cella (non premere Invio o tab)

2. minimizzare l'excel.

In questo caso il codice non funziona.
Questo commento è stato fatto dal moderatore sul sito
Se stai lavorando in una cartella di lavoro separata nel punto in cui viene raggiunto il tempo di chiusura, chiuderà quella cartella di lavoro e non quella inattiva. Questo può essere risolto regolando il codice su:

Dim CloseTime As Date
Oscura WKB come stringa
Sub TimeSetting ()
WKB = ActiveWorkbook.Name
CloseTime = Now + TimeValue("00:00:15")
On Error Resume Next
Application.OnTime EarlyestTime:=CloseTime, _
Procedura:="SavedAndClose", Schedule:=True
End Sub
Sub TimeStop()
On Error Resume Next
Application.OnTime EarlyestTime:=CloseTime, _
Procedura:="SavedAndClose", Schedule:=False
End Sub
Sub SavedAndClose()
Cartelle di lavoro(WKB).Chiudi Savechanges:=True
End Sub
Questo commento è stato fatto dal moderatore sul sito
Ho notato la stessa cosa. E ho trovato la stessa soluzione :-)
Questo commento è stato fatto dal moderatore sul sito
A volte mi imbatto in un "Errore di tempo di esecuzione" quando apro la cartella di lavoro in cui è integrato questo codice. Comunque scrivere meglio questo codice per renderlo più stabile?
Questo commento è stato fatto dal moderatore sul sito
grazie brillanti
Questo commento è stato fatto dal moderatore sul sito
ciao voglio inserire questo codice in un altro codice come il codice di scadenza con questo codice come posso fare ....?
il codice sta... seguendo
Private Sub Workbook_Open ()

Dim exdate come data
Dim i As Integer

'modifica qui i valori per la data di scadenza!!!
anul = 2019 'anno
luna = 5' mese
ziua = 16' giorno

exdate = DateSerial(anul, luna, ziua)

Se Data > exdate Allora
MsgBox ("L'applicazione " & ThisWorkbook.Name & " è scaduta !" & vbNewLine & vbNewLine _
& "La data di impostazione della scadenza è: " & exdate & " :)" & vbNewLine & vbNewLine _
& "Contatta l'amministratore per rinnovare la versione!"), vbCritical, ThisWorkbook.Name

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

In caso di errore Vai a ErrorHandler
Con cartelle di lavoro(ThisWorkbook.Name)
Se .Percorso <> "" Allora

.Salvato = Vero
.ChangeFileAccess xlReadOnly

Elimina file_scaduto

'ottieni il nome dell'addin se è addin e disinstalla addin
Se Application.Version >= 12 Allora
i = 5
Altrimenti: io = 4
End If

Se Right(ThisWorkbook.Name, i) = ".xlam" Oppure Right(ThisWorkbook.Name, i) = ".xla" Allora
wbName = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - i)
'disinstalla addin se è installato
Se AddIns(wbName).Installato allora
AddIns(wbName).Installed = Falso
End If
End If

.Vicino

End If
Fine Con

Exit Sub

End If

'MsgBox ("Hai " & exdate - Data e "Giorni rimasti")
Exit Sub

ErrorHandler:
MsgBox "Impossibile eliminare il file.."
Exit Sub

End Sub
Questo commento è stato fatto dal moderatore sul sito
Se stai lavorando in una cartella di lavoro separata nel punto in cui viene raggiunto il tempo di chiusura, chiuderà quella cartella di lavoro e non quella inattiva. Questo può essere risolto regolando il codice su: - corretto e testato dal commento sottostante - utilizzare questo codice:

Entra in "Questa cartella di lavoro"

Private Sub Workbook_BeforeClose(Annulla come booleano)
Chiama TimeStop
End Sub
Private Sub Workbook_Open ()
Impostazione dell'ora di chiamata
End Sub
Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range)
Chiama TimeStop
Impostazione dell'ora di chiamata
End Sub


Entra nel "modulo":

Dim CloseTime As Date
Sub TimeSetting ()
CloseTime = Now + TimeValue("00:10:00")
On Error Resume Next
Application.OnTime EarlyestTime:=CloseTime, _
Procedura:="SavedAndClose", Schedule:=True
End Sub
Sub TimeStop()
On Error Resume Next
Application.OnTime EarlyestTime:=CloseTime, _
Procedura:="SavedAndClose", Schedule:=False
End Sub
Sub SavedAndClose()
ThisWorkbook.Close Savechanges:=Vero
End Sub


puoi modificare l'impostazione dell'ora modificando CloseTime = Now + TimeValue ("00:10:00") - questo è impostato su 10 minuti, cambia ("00:10:00") a qualsiasi ora desideri e funziona.
Questo commento è stato fatto dal moderatore sul sito
Non sono sicuro di cosa sia successo, ma questa soluzione non funziona più. Ecco la soluzione a questa soluzione che ha funzionato per me:

````
Dim reset Conta tutto il tempo

Cartella di lavoro secondaria pubblica_Open()
On Error Resume Next
Imposta xWB = Questa cartella di lavoro
resetCount = 0
End Sub

Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) In caso di errore Riprendi Avanti
cancella
End Sub

Sub Reset() In caso di errore Riprendi Avanti
Statico xCloseTime
Se resetCount <> 0 Allora
ThisWorkbook.Application.OnTime xCloseTime, "SaveWork1", Schedule:=False
resetCount = resetCount + 1
xCloseTime = DateAdd("n", 15, Ora)
ThisWorkbook.Application.OnTime xCloseTime, "SaveWork1", Schedule:=True

Altro
resetCount = resetCount + 1
xCloseTime = DateAdd("n", 15, Ora)
ThisWorkbook.Application.OnTime xCloseTime, "SaveWork1", Schedule:=True
End If
End Sub
````
Questo sta usando lo stesso SaveWork1 As:
````Sub SaveWork1()
Application.DisplayAlerts = False
ThisWorkbook.Salva
Questa cartella di lavoro.Chiudi

Application.DisplayAlerts = Vero
End Sub

````
Questo commento è stato fatto dal moderatore sul sito
Questo è fantastico. Qualche suggerimento sull'aggiunta di una finestra di messaggio popup che avviserà l'utente che il foglio sta per chiudersi e darà loro la possibilità di reimpostare il timer?
Questo commento è stato fatto dal moderatore sul sito
Quando non voglio modificare e voglio solo consultare, il file si chiude comunque. Non dovrebbe chiudersi. Dovrebbe ricominciare a contare quando seleziono le celle. Qual'è la soluzione?
Questo commento è stato fatto dal moderatore sul sito
Quando non voglio modificare e voglio solo consultare, il file si chiude comunque. Non dovrebbe chiudersi. Dovrebbe ricominciare a contare quando seleziono le celle. Qual'è la soluzione?
Non ci sono ancora commenti pubblicati qui
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite