Datei nach Inaktivität automatisch schließen

24/07/2008 - 20:14 von Jens Wennemede | Report spam
Hallo NG,

ich habe mal wieder ein Problem.
Wir haben sehr viele Dateien die auf dem Server liegen und von mehreren
Personen bearbeitet werden sollen.

Das Problem:
Hat jemand die Datei offen kann man diese ja nur Schreibgeschützt öffnen.
Jetzt geht die telefoniererei los, bitte Datei schließen...

Meine Frage:
Kann man eine Datei mit Hilfe von VBA nach einer gewissen Zeit, wenn nicht
mehr daran gearbeitet wird, automatisch schließen? Wichtig wàre aber das nur
diese Datei und nicht eventuell andere offene Dateien geschlossen werden.
Ich stelle mir da so eine Art Timer vor der merkt ob an einer Datei
gearbeitet wird oder nicht. Ist man inaktiv soll diese einfach nach bsw. 10
Minuten gespeichert und geschlossen werden.

Ich bin gespannt ob man so etwas mit VAB lösen kann. Vielen Dank für Eure
Hilfe.

Gruß Jens


Office 2003
 

Lesen sie die antworten

#1 Dimo Tabken
24/07/2008 - 21:16 | Warnen spam
Am Thu, 24 Jul 2008 20:14:22 +0200 schrieb Jens Wennemede:


Moinmoin Jens!

Kann man eine Datei mit Hilfe von VBA nach einer gewissen Zeit, wenn nicht
mehr daran gearbeitet wird, automatisch schließen?



Ja ;-)

Wichtig wàre aber das nur
diese Datei und nicht eventuell andere offene Dateien geschlossen werden.



ist klar ...

Ich stelle mir da so eine Art Timer vor der merkt ob an einer Datei
gearbeitet wird oder nicht. Ist man inaktiv soll diese einfach nach bsw. 10
Minuten gespeichert und geschlossen werden.



na, denn mal los ...

Deine Anforderung kannst Du mit der OnTime-Methode umsetzen.
Die *kleine* Schwierigkeit ist lediglich, dass Excel kein Event
"EsHatSichIrgenwasInDerMappeGeàndert" bereithàlt. Du mußt also Deine
Prozedur an verschiedene Events binden, die dann aber alle eventuellen
Änderungen abdeckt:
im VBA-Bereich [DieseArbeitsmappe] fügst Du folgende Prozeduren ein:

Private Sub Workbook_Open()
SetStartTime
End Sub

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
SetStartTime
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As
Excel.Range)
SetStartTime
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Excel.Range)
SetStartTime

End Sub

Dann fügst Du in die Arbeitsmappe noch ein Standardmodul ein, in dem
folgendes steht:

Dim dblZeit As Double

Sub SetStartTime()
dblZeit = Now + TimeValue("00:02:00")
Application.OnTime dblZeit, "MappeSchliessen"
End Sub


Sub MappeSchliessen()
dblZeit = Empty
Thisworkbook.Close savechanges:=true
End Sub

Fertig. Das war's schon. Im Sub SetStartTime kannst Du den Wert für Dauer
des Timers noch einstellen, ich hab's mal auf zwei Minuten gesetzt.


Vielleicht hilfts Dir ja weiter.

schönen Abend!



Gruß, Dimo
'Gott ist tot!' -> Nietzsche, 1887
'Nietzsche ist tot!' -> Gott, 1900

Ähnliche fragen