Automatisch afsluiten van bestand na X-tijd?

Status
Niet open voor verdere reacties.

MorrisD

Nieuwe gebruiker
Lid geworden
15 jan 2009
Berichten
4
Hallo,

Voor mijn werk heb ik een Excel bestand met heel veel data. Dit bestand bevat verschillende macro's om verschillende overzichten te genereren. Omdat dit bestand door verschillende collega's veelvuldig wordt gebruikt wilde ik dit bestand delen, echter Excel geeft aan als dit gebeurt dat de macro's niet meer werken.
Om te voorkomen dat een collega het bestand heeft gelocked, vroeg ik mij af of het mogelijk was om een soort van time-out functie in te bouwen, m.a.w. dat het bestand na x-tijd automatisch wordt afgesloten bij geen activiteit. Zodoende komt het bestand weer beschikbaar voor anderen.

Ik hoop dat iemand mij op weg kan helpen.

Groeten Ton
 
Das een leuke vraag, maar niet erg makkelijk:

Code:
'   eerst een timer maken (in dit voorbeeld 5 minuten)
Private Sub Workbook_Open() 
    EndTime = Now + TimeValue("00:5:00") 
    RunTime 
End Sub 


'   indien wel wijziging, dan de "timer" resetten
Private Sub Worksheet_Change(ByVal Target As  Range) 
    If EndTime Then 
        Application .OnTime _ 
        EarliestTime:=EndTime, _ 
        Procedure:="CloseWB", _ 
        Schedule:=False 
        EndTime = Empty 
    End If 

    EndTime = Now + TimeValue("00:10:00") 
    RunTime 
End Sub

Module:

Code:
Public EndTime 

Sub RunTime() 
    Application.OnTime _ 
    EarliestTime:=EndTime, _ 
    Procedure:="CloseWB", _ 
    Schedule:=True 
End Sub 
 
Sub CloseWB() 
    Application.DisplayAlerts = False 
    With  ThisWorkbook 
        . Saved = True 
        .Close 
    End With 
End Sub
 
Hallo, ik ben om precies dezelfde reden als MorrisD ook op zoek naar een code welke een bestand automatisch kan afsluiten na een bepaalde tijd inactiviteit. Alleen gaat het in dit geval om een Word document.
Zou degene die hier een oplossing voor heeft ook graag willen vermelden (want ik ben echt een enorme newbee met VBA) hoe en waar ik deze code precies neer moet zetten om het geheel werkend te krijgen?

Ik hoop dat iemand mij hiermee kan helpen. Bij voorbaat dank voor jullie reacties!

Groeten,
Just
 
Bedankt Radjesh,
Deze week zal ik het uitproberen of het werkt.

Groeten Ton
 
Hoi Radjesh,

Had toch eerder de tijd om het uit te proberen. Ik heb twee vraagjes:

1) Timer werkt, WB wordt afgesloten, echter na wijzigingen wordt de timer niet gereset.

2) Wanneer ik het goed begrijp, zouden de veranderingen gesaved moeten worden wanneer het WB afgesloten wordt. Dit werkt bij mij niet goed.

Ik hoop dat je me verder kan helpen. In iedergeval ben ik al verder dan eerst.

Groeten Ton
 
Is er nog iemand die mij kan helpen?

Veel dank.

Groeten Ton
 
Even geen tijd, maar zal er proberen in de loop van vandaag nog even naar te kijken. :thumb:
 
Is het niet simpeler om voor alle collega's een kopie van dat bestand te maken en automatisch als add-in te laden. Dan heeft ieder toegang tot de gewenste macro's.
 
Even geen tijd, maar zal er proberen in de loop van vandaag nog even naar te kijken. :thumb:


Hoi Radjesh,

Ik zit met hetzelfde probleem, de timer reset zichzelf niet als er in het bestand gewerkt wordt...

Ik hoop dat je een oplossing weet te vinden.

MVG DjoeZty aka Joost
 
Na kleine aanpassing van Radjeh's code
Code:
ThisWorkbook(code)

Private Sub Workbook_Open()
   RunTime
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   Application.OnTime EndTime, "CloseWB", , False 'uitvoering cancelen
   MsgBox "Timer wordt opnieuw ingesteld."
   RunTime
End Sub


Module1(code)
Public EndTime

Sub RunTime()
   EndTime = Now + TimeValue("00:00:20")
   Application.OnTime EndTime, "CloseWB", , True
End Sub
 
Sub CloseWB()
     With ThisWorkbook
      .Saved = True
      .Close
   End With
End Sub
Groet, Ed
 
Laatst bewerkt:
Yessss!

Hallo Ed,

Code werkt perfect :)

Allemaal dank voor de hulp. Klasse! :thumb:

MVG DjoeZty aka Joost
 
Hallo Ed,

Code werkt perfect :)

Allemaal dank voor de hulp. Klasse! :thumb:

MVG DjoeZty aka Joost

Nog één klein vraagje, piece-of-cake voor jullie kanjers:
Er staat:
Code:
Sub CloseWB()
     With ThisWorkbook
      .Saved = True
      .Close
   End With
End Sub

Nu wil ik alleen het bestand waar de macro in loopt, op laten slaan na x tijd inactiviteit en daarna afsluiten.

Ik heb dat geprobeerd door ActiveWorkbook.save in te voegen, maar dan slaat hij ALLE actieve Excel sheets op, ipv alleen de file met de macro...

Graag jullie hulp AUB!

MVG,
Joost
 
Piece of cake:
Code:
Sub CloseWB()
     With ThisWorkbook
      .Save
      .Close
   End With
End Sub
Met ThisWorkbook verwijs je uitsluitend naar de werkmap waar deze macro in staat.

Succes, Ed
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan