VBA überwacht User-Aktivität Excel 2000

23/06/2009 - 13:23 von Raimund Gryszik | Report spam
Hallo Experten!

Wie möchten gerne eine geöffnete Excel-Mappe automatisch schließen, wenn der
Benutzer eine Zeitlang *nichts* tut. Um diese Mappen anderen Usern zugànglich
zu machen, denn sie werden in unserem Firmennetz hàufig genutzt.

Zu diesem Zweck wollen wir bei jeder Änderung einen Timer aufziehen, der
nach Ablauf eine Warnung ausgibt und danach beim erneuten Ablauf die Mappe
schließt (worksheet_change).

Problem: wenn der User nichts veràndert, sondern nur reinschaut, also z.B.
scrollt, blàttert oder Menupunkte aufruft, liefe der Timer ab und die Warnung
erscheint bzw. die Mappe würde geschlossen. Dabei wollen wir nur zuschlagen,
wenn er zur Mittagspause gegangen ist :-)

Frage: Gibt es ein event, welches bei jeder Benutzeraktivitàt ausgelöst
wird, bei jedem "Lebenszeichen"? Am besten für die ganze Mappe, notfalls auch
für einzelne Sheets.

Danke für Tipps

Raimund Gryszik, Berlin
 

Lesen sie die antworten

#1 Andreas Killer
23/06/2009 - 15:47 | Warnen spam
Raimund Gryszik schrieb:

Frage: Gibt es ein event, welches bei jeder Benutzeraktivitàt ausgelöst
wird, bei jedem "Lebenszeichen"? Am besten für die ganze Mappe, notfalls auch
für einzelne Sheets.


Nun ja, mit Scrollen, etc. sieht das schlecht aus, aber mögliche
Ereignisse wàren

Workbook_SheetSelectionChange
Workbook_SheetActivate
Workbook_SheetCalculate

in denen man den Timer zurücksetzen sollte.

Dabei wàre aber dann noch die Frage was ihr noch alles in der Mappe
habt, was diese Ereignisse umgeht.
Und ihr müsst überlegen was passieren soll wenn die Mappe nicht
gespeichert ist.

BTW, falls die Mappe generell nicht gespeichert werden soll: Es reicht
wenn man dem Excelfile einen Schreibschutz via Windows-Explorer
verpasst. (Nicht verwechseln mit dem Schreibschutz den man über
"Datei\Speichern unter" erreicht!)

Und wenn ein Schreibschutz da ist, dann kann man die "nervige Abfrage"
ob gespeichert werden soll bei Änderungen mit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Wenn die Mappe schreibgeschützt ist, dann niemals speichern
With ThisWorkbook
If .ReadOnly Then .Saved = True
End With
End Sub

abwürgen.

Andreas.

Ähnliche fragen