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

Come salvare e chiudere automaticamente un file Excel dopo un certo periodo di inattività?

In alcuni casi, ad esempio lasciando un file Excel su un disco condiviso, quando il file è ancora aperto da un utente, altri non sono in grado di modificare la cartella di lavoro. Quindi come chiudere automaticamente il file dopo un certo tempo di inattività per facilitare il lavoro degli altri? Questo articolo ti aiuterà con il metodo VBA.

Salva automaticamente e chiudi un file Excel dopo un certo tempo di inattività con codice VBA


Salva automaticamente e chiudi un file Excel dopo un certo tempo di inattività con codice VBA


Per salvare automaticamente e chiudere un file Excel dopo un certo periodo di inattività, eseguire le seguenti operazioni.

1. Aprire la cartella di lavoro necessaria per salvarla e chiuderla automaticamente dopo un certo periodo di inattività. Quindi premere il pulsante altro + F11 chiavi insieme per aprire il Microsoft Visual Basic, Applications Edition finestra.

2. Nel Microsoft Visual Basic, Applications Edition finestra, fare doppio clic su Questa cartella di lavoro nel riquadro di destra per aprire la finestra del codice. Quindi copia e incolla sotto il codice VBA nella finestra del codice. Vedi screenshot:

Codice VBA 1: salva automaticamente e chiude un file Excel dopo un certo periodo di inattività

Dim xTime As String
Dim xWB As Workbook

Private Sub Workbook_Open()
'Updated by Extendoffice 2019/1/20
    On Error Resume Next
    xTime = Application.InputBox("Please specify the idle time:", "KuTool For Excel", "00:00:20", , , , , 2)
    Set xWB = ActiveWorkbook
    If xTime = "" Then Exit Sub
    Reset
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    On Error Resume Next
    If xTime = "" Then Exit Sub
    Reset
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    On Error Resume Next
    If xTime = "" Then Exit Sub
    Reset
End Sub

Sub Reset()
    Static xCloseTime
    If xCloseTime <> 0 Then
        ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , False
    End If
    xCloseTime = Now + TimeValue(xTime)
    ActiveWorkbook.Application.OnTime xCloseTime, "SaveWork1", , True
End Sub

3. Quindi continuare a fare clic inserire > moduloe copia e incolla il codice sottostante nella finestra del modulo. Vedi screenshot:

Codice VBA 2: salva automaticamente e chiude un file Excel dopo un certo periodo di inattività

Sub SaveWork1()
'Updated by Extendoffice 2019/1/20
    Application.DisplayAlerts = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    
    Application.DisplayAlerts = True
End Sub

4. premi il altro + Q contemporaneamente i tasti per chiudere il file Microsoft Visual Basic, Applications Edition finestra.

5. Clic Compila il > Salva con nome > Scopri la nostra gamma. Vedi screenshot:

6. Nel Salva con nome finestra di dialogo, selezionare una cartella per salvare il file, assegnargli il nome desiderato nella casella Nome file, selezionare Cartella di lavoro abilitata per Excel dal Salva con nome Digitare elenco a discesa e infine fare clic su Risparmi pulsante. Vedi screenshot:

D'ora in poi, ogni volta che apri questa cartella di lavoro, a Kutools for Excel apparirà la finestra di dialogo. Immettere l'ora in cui si salverà e si chiuderà la cartella di lavoro in base a, quindi fare clic su OK pulsante.

E la cartella di lavoro verrà salvata e chiusa automaticamente dopo il periodo di inattività specificato. Vedi screenshot:


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 (21)
Ancora nessuna valutazione. Puoi essere il primo a votare!
Questo commento è stato fatto dal moderatore sul sito
Ciao Grazie carichi per questo codice. Solo un problema. Sembra che tenti di chiudere tutte le cartelle di lavoro aperte, quindi si blocca se la chiusura di un'altra cartella di lavoro viene annullata o non riceve risposta. hai qualche ritocco che può risolvere questo problema?
Questo commento è stato fatto dal moderatore sul sito
Ho lo stesso problema... Ho provato ad aprire una nuova cartella di lavoro e ho inserito dei dati... quando è arrivato il momento, entrambe le cartelle di lavoro sono state chiuse, ma quella nuova non è stata salvata... C'è un modo per Aggiustalo?
Oltre a questo, funziona benissimo!! Molte grazie!!
Questo commento è stato fatto dal moderatore sul sito
Ciao Gaston,
Il codice è stato aggiornato con il problem solving. Per favore, prova. Ci scusiamo per l'inconveniente e grazie per il tuo commento.
Questo commento è stato fatto dal moderatore sul sito
Ciao Enrico,
Il codice è stato aggiornato con il problem solving. Per favore, prova. Ci scusiamo per l'inconveniente e grazie per il tuo commento.
Questo commento è stato fatto dal moderatore sul sito
Questo non funziona quando ci si concentra su una cella particolare in un foglio. Il caso d'uso è quando l'utente digita in una cella e lascia Excel aperto con il cursore all'interno della cella.
Questo commento è stato fatto dal moderatore sul sito
Sei riuscito a trovare una soluzione per questo per caso?
Questo commento è stato fatto dal moderatore sul sito
Consiglierei di identificare la cartella di lavoro con il nome del file della cartella di lavoro. Ciò consentirebbe agli utenti di aprire più cartelle di lavoro e chiudere solo la cartella di lavoro specifica che deve avere il blocco temporale.

Suggerimento: imposta xwb = Cartelle di lavoro(" ")
invece di: Imposta xwb = ActiveWorkbook

Inoltre, sostituisci tutti i riferimenti a "ActiveWorkbook" con Xwb nel modulo

Ottimo codice altrimenti.
Questo commento è stato fatto dal moderatore sul sito
Ciao Marco,
Grazie per aver condiviso.
Questo commento è stato fatto dal moderatore sul sito
Ciao Marco,

Grazie per aver pubblicato questo emendamento: ho trovato così tanti codici per la chiusura di cartelle di lavoro inattive, ma tutti sembravano influenzare quella che non vuoi chiudere!

Sono molto nuovo di VBA, quindi non sono sicuro di come funzionerebbe il codice per sostituire la dicitura "ActiveWorkbook" all'interno del modulo. Ho provato a sostituire la dicitura con "Xwb" ma non cambia nulla e potrei essere stupido. Ti dispiacerebbe postare una copia del codice per favore?

Grazie
Questo commento è stato fatto dal moderatore sul sito
C'è un modo per farlo funzionare così anche se non si è sul foglio come fare clic su un'altra finestra, il timer chiuderà comunque quel foglio? Sembra che devo rimanere sul file per farlo funzionare
Questo commento è stato fatto dal moderatore sul sito
sta chiedendo tempo di inattività ogni volta che apro.

Voglio che il tempo non venga mostrato durante l'apertura della cartella di lavoro. (se richiesto, può essere modificato in VBA)
Questo commento è stato fatto dal moderatore sul sito
Cambia riga
xTime = Application.InputBox("Specificare il tempo di inattività:", "KuTool per Excel", "00:00:20", , , , , 2)


a

xOra = "00:00:20"


non chiederà
Questo commento è stato fatto dal moderatore sul sito
C'è un modo per cambiarlo in modo da richiedere all'utente di salvare/chiudere il file, invece di salvare e chiudere automaticamente il file?
Questo commento è stato fatto dal moderatore sul sito
Ciao. Ho bisogno di impostare il mio foglio di calcolo condiviso sulla rete dell'ufficio per il salvataggio automatico e la chiusura quando ho finito con esso per la giornata. Solo io e il mio capo dovremmo apportare e salvare le modifiche, ma diversi manager le visualizzano quotidianamente.
Devo essere in grado di salvarlo automaticamente per noi due, senza salvarlo per altri utenti. È possibile? Posso impostare la macro in modo che funzioni solo per noi? O avrà effetto su tutti?
So come proteggere il foglio, ma non posso farlo, perché di tanto in tanto vogliono poter apportare delle modifiche temporanee. Devo solo essere in grado di limitare il salvataggio automatico a utenti specifici.
Questo commento è stato fatto dal moderatore sul sito
(Sospiro.)
Dai un'occhiata al codice.
Se inserisci questo VBA in Excel001.xlsm, ma, quando si verifica il timeout, hai Excel002.xlsm come cartella di lavoro "attiva", in realtà chiuderà QUEL file Excel, anziché quello in cui hai inserito il VBA .
Questo commento è stato fatto dal moderatore sul sito
guarda sotto, il commento di Mark: "Raccomanderei di identificare la cartella di lavoro con il nome del file della cartella di lavoro. Ciò consentirebbe agli utenti di aprire più cartelle di lavoro e chiudere solo la cartella di lavoro specifica che deve avere il blocco temporale.

Suggerimento: imposta xwb = Cartelle di lavoro(" ")
invece di: Imposta xwb = ActiveWorkbook

Inoltre, sostituisci tutti i riferimenti a "ActiveWorkbook" con Xwb nel modulo

Ottimo codice altrimenti."
Questo commento è stato fatto dal moderatore sul sito
Ciao mister, come visualizzare il conto alla rovescia?
Questo commento è stato fatto dal moderatore sul sito
Ciao mister, come visualizzare il conto alla rovescia?
Questo commento è stato fatto dal moderatore sul sito
Perdonen, se si può modificare il codice o adattarlo per il collegamento con i formulari (UserForm), perché solo il collegamento è attivo nelle celle ma non nei formulari, grazie
Questo commento è stato fatto dal moderatore sul sito
Ciao Moises Peraza,
UserForm non influisce sull'utilizzo del codice VBA. Puoi descrivere più chiaramente il problema che hai riscontrato.
Questo commento è stato fatto dal moderatore sul sito
Gracias por responder, el inconveniente que tengo es: le pongo de tiempo de inactividad 2 min. Nel momento in cui trabajar con formularios (ingresar informazioni del cliente), pasado ese tiempo me cierra o me tira il messaggio che se cerrara, spero darme a entender
Non ci sono ancora commenti pubblicati qui
Lasciate i vostri commenti
Pubblicazione come ospite
×
Valuta questo post:
0   Personaggi
Posizioni suggerite