Note: The other languages of the website are Google-translated. Back to English
Inloggen  \/ 
x
or
x
Registreer  \/ 
x

or

Hoe automatisch een Excel-bestand opslaan en sluiten na een bepaalde inactiviteit?

In sommige gevallen, zoals het achterlaten van een Excel-bestand op een gedeelde schijf, terwijl het bestand nog wordt geopend door een gebruiker, kunnen anderen de werkmap niet bewerken. Dus hoe het bestand automatisch te sluiten na een bepaalde inactieve tijd om het werk van anderen te vergemakkelijken? Dit artikel helpt je met de VBA-methode.

Automatisch een Excel-bestand opslaan en sluiten na een bepaalde inactieve tijd met VBA-code


Automatisch een Excel-bestand opslaan en sluiten na een bepaalde inactieve tijd met VBA-code


Ga als volgt te werk om een ​​Excel-bestand automatisch op te slaan en te sluiten na een bepaalde inactieve tijd.

1. Open de werkmap die u nodig hebt om deze automatisch te laten opslaan en sluiten na een bepaalde inactiviteit. Druk vervolgens op de anders + F11 sleutels samen om de te openen Microsoft Visual Basic voor toepassingen venster.

2. In de Microsoft Visual Basic voor toepassingen Dubbelklik op het Dit Werkboek in het rechterdeelvenster om het codevenster te openen. Kopieer en plak vervolgens onder VBA-code in het codevenster. Zie screenshot:

VBA-code 1: automatisch opslaan en een Excel-bestand sluiten na een bepaalde inactieve tijd

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. Blijf dan klikken Invoegen > module, en kopieer en plak onderstaande code in het modulevenster. Zie screenshot:

VBA-code 2: automatisch opslaan en een Excel-bestand sluiten na een bepaalde inactieve tijd

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

4. druk de anders + Q toetsen tegelijk om het Microsoft Visual Basic voor toepassingen venster.

5. klikken Dien in > Opslaan als > Blader. Zie screenshot:

6. In de Opslaan als dialoogvenster, selecteer een map om het bestand op te slaan, geef het een naam zoals u nodig hebt in het vak Bestandsnaam, selecteer Excel-werkmap met ingeschakelde macro's van de Opslaan als type dan: vervolgkeuzelijst en klik ten slotte op het Bespaar knop. Zie screenshot:

Vanaf nu, elke keer dat u deze werkmap opent, wordt een Kutools for Excel dialoogvenster zal verschijnen. Voer de tijd in die u wilt opslaan en sluit de werkmap op basis van, en klik vervolgens op OK knop.

En de werkmap wordt automatisch opgeslagen en gesloten na die opgegeven inactieve tijd. Zie screenshot:


De beste tools voor kantoorproductiviteit

Kutools voor Excel lost de meeste van uw problemen op en verhoogt uw productiviteit met 80%

  • visfuik: Snel invoegen complexe formules, grafieken en alles wat je eerder hebt gebruikt; Versleutel cellen met wachtwoord; Maak een mailinglijst en stuur e-mails ...
  • Super Formula-balk (bewerk eenvoudig meerdere regels tekst en formule); Lay-out lezen (gemakkelijk grote aantallen cellen lezen en bewerken); Plakken in gefilterd bereik...
  • Voeg cellen / rijen / kolommen samen zonder gegevens te verliezen; Gespleten cellen inhoud; Combineer dubbele rijen / kolommen... Voorkom dubbele cellen; Vergelijk Ranges...
  • Selecteer Dupliceren of Uniek Rijen; Selecteer lege rijen (alle cellen zijn leeg); Super zoeken en fuzzy zoeken in veel werkboeken; Willekeurige selectie ...
  • Exacte kopie Meerdere cellen zonder de formuleverwijzing te wijzigen; Maak automatisch verwijzingen naar meerdere bladen; Plaats kogels, Selectievakjes en meer ...
  • Extraheer tekst, Tekst toevoegen, Verwijderen op positie, Ruimte verwijderen; Paging-subtotalen maken en afdrukken; Converteren tussen celinhoud en opmerkingen...
  • Super filter (bewaar en pas filterschema's toe op andere bladen); Geavanceerd sorteren per maand / week / dag, frequentie en meer; Speciaal filter door vet, cursief ...
  • Combineer werkmappen en werkbladen; Tabellen samenvoegen op basis van sleutelkolommen; Gegevens splitsen in meerdere bladen; Batch Converteer xls, xlsx en PDF...
  • Meer dan 300 krachtige functies. Ondersteunt Office / Excel 2007-2019 en 365. Ondersteunt alle talen. Eenvoudig te implementeren in uw onderneming of organisatie. Gratis proefperiode van 30 dagen met volledige functies. 60 dagen geld-terug-garantie.
kte tabblad 201905

Office-tabblad Brengt een interface met tabbladen naar Office en maakt uw werk veel gemakkelijker

  • Schakel bewerken en lezen met tabbladen in Word, Excel, PowerPoint in, Publisher, Access, Visio en Project.
  • Open en maak meerdere documenten in nieuwe tabbladen van hetzelfde venster in plaats van in nieuwe vensters.
  • Verhoogt uw productiviteit met 50% en vermindert elke dag honderden muisklikken voor u!
officetab onderkant
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Mike · 6 months ago
    (Sigh.)
    Have a look at the code.
    If you put this VBA into Excel001.xlsm, but, when the timeout occurs, you have Excel002.xlsm as the "active" workbook, then it's actually going to close THAT Excel file, rather than the one you've put the VBA into.

    • To post as a guest, your comment is unpublished.
      Mike B · 14 hours ago
      look below, Mark's comment : "I would recommend identifying the workbook with the workbook file name. This would allow the users to have multiple workbooks open and closing out only the specific workbook that needs to have the time lock.

      Suggestion: Set xwb = Workbooks("<file name>")
      instead of: Set xwb = ActiveWorkbook

      Also, replace all references to "ActiveWorkbook" to the Xwb in the module

      Great code otherwise."
  • To post as a guest, your comment is unpublished.
    Andrew · 1 years ago
    Hi. I need to set my shared spreadsheet on the office network to auto save and close when I'm done with it for the day. Only my boss and I are supposed to make and save changes, but several managers view it daily.

    I need to be able to have it auto save for the two of us, while not saving for other users. Is this possible? Can I set the macro to work only for us? Or will it effect everyone?

    I know how to protect the sheet, but I can't do that, because they want to be able to make some temporary changes from time to time. I just need to be able restrict auto save to specific users.
  • To post as a guest, your comment is unpublished.
    Garth · 1 years ago
    Is there a way to change this so it prompts the user to save/close the file, instead of automatically saving and closing the file?
  • To post as a guest, your comment is unpublished.
    Nitin · 1 years ago
    it is asking for idle time everytime I am opening.

    I want time should not be shown while opening the workbook. (if required, it can be changed in VBA)
    • To post as a guest, your comment is unpublished.
      Tarun · 1 years ago
      Change line
      xTime = Application.InputBox("Please specify the idle time:", "KuTool For Excel", "00:00:20", , , , , 2)


      to

      xTime = "00:00:20"


      it will not ask
  • To post as a guest, your comment is unpublished.
    robert · 2 years ago
    Is there a way to make this work so even if you not on the sheet like click over to another window the timmer will still close that sheet? It seems like i have to stay on the file for it to work
  • To post as a guest, your comment is unpublished.
    Mark · 2 years ago
    I would recommend identifying the workbook with the workbook file name. This would allow the users to have multiple workbooks open and closing out only the specific workbook that needs to have the time lock.

    Suggestion: Set xwb = Workbooks("<file name>")
    instead of: Set xwb = ActiveWorkbook

    Also, replace all references to "ActiveWorkbook" to the Xwb in the module

    Great code otherwise.
    • To post as a guest, your comment is unpublished.
      _Sammy_ · 2 years ago
      Hi Mark,

      Thanks for posting this amendment - found so many codes for closing inactive workbooks, but all of them seemed to affect the one you don't want to close!

      I'm very new to VBA, so I'm not sure how the code would work to replace the wording 'ActiveWorkbook' within the module. I've tried to replace the wording with 'Xwb' but that doesn't change anything and I may be being daft. Would you mind posting a copy of the code please?

      Thanks
    • To post as a guest, your comment is unpublished.
      crystal · 2 years ago
      Hi Mark,
      Thank you for sharing.
  • To post as a guest, your comment is unpublished.
    VR · 2 years ago
    This does not work when focus in on a particular cell in a sheet. Use case is when user is typing in a cell and leave the excel open with the cursor inside the cell.
    • To post as a guest, your comment is unpublished.
      Rehan · 2 years ago
      Were you able to find a fix for this by any chance?
  • To post as a guest, your comment is unpublished.
    henry · 2 years ago
    Hi Thanks loads for this code. Just one issue. It seems to try to close all open workbooks thus stalls if another workbook close is cancelled or not responded to. have you any touch-ups that can fix this?
    • To post as a guest, your comment is unpublished.
      crystal · 2 years ago
      Hi Henry,
      The code has been updated with the problem solving. Please have a try. Sorry for the inconvenience and thank you for your comment.
    • To post as a guest, your comment is unpublished.
      Gaston · 2 years ago
      I have the same issue... I tried to open a new workbook, and entered some data.... when the time came, both workbooks were closed, but the new one wasn´t saved... Is there a way to fix this?
      Besides that, it works great!! Thanks a lot!!
      • To post as a guest, your comment is unpublished.
        crystal · 2 years ago
        Hi Gaston,
        The code has been updated with the problem solving. Please have a try. Sorry for the inconvenience and thank you for your comment.