Thema Datum  Von Nutzer Rating
Antwort
04.02.2008 16:21:26 Dieter Lichtenberg
NotSolved
Blau Aw:Nutzungszeit eines Dokumentes / Arbeitsmappe ei
05.02.2008 15:15:42 jh
NotSolved
06.02.2008 09:03:44 Dieter
NotSolved

Ansicht des Beitrags:
Von:
jh
Datum:
05.02.2008 15:15:42
Views:
1186
Rating: Antwort:
  Ja
Thema:
Aw:Nutzungszeit eines Dokumentes / Arbeitsmappe ei
Hallo,

eine wirklich rundum befriedigende Lösung für dein
Problem kann ich dir nicht anbieten. Du könntest mit

Application.OnTime Now + TimeSerial(0, 30, 0), "Beenden"

(zweckmäßigerweise in der Sub Workbook_Open) den Excel-
Timer starten, der nach 30 Minuten (oder einer anderen
Zeit, die du für angemessen hältst) eine Prozedur startet.
Im Beispiel heißt sie "Beenden", sie muss Public sein, in
einem Modul stehen und die gewünschte Aktion auslösen
(MsgBox, Speichern/Beenden oder was auch immer).

Das kann der User dadurch umgehen, dass er beim Öffnen
der Datei die Makros deaktiviert. Du müsstest also die
Funktionalität der Arbeitsmappe bei deaktivierten Makros
einschränken, z. B. dadurch, dass vor dem Speichern
(Sub Worksheet_BeforeSave) alle Worksheets bis auf ein
leeres Blatt mit

Worksheets(Index).Visible = xlSheetVeryHidden

ausgeblendet werden. Blätter, die auf VeryHidden gesetzt
sind, kann der User auch nicht im Menü Format - Blatt -
Einblenden wieder sichtbar machen. Das müsste ebenfalls
in der Sub Workbook_Open geschehen, indem die Visible-
Eigenschaft wieder auf True gesetzt wird (und natürlich
nach dem Speichern, damit der User bei Bedarf weiter
arbeiten kann).

Allerdings ist es so, dass der Excel-Timer ziemlich leicht
"außer Gefecht gesetzt" werden kann. Es genügt, dass beim
User mitten in einer Eingabe das Telefon klingelt und er
ohne die Eingabe zu beenden "entschwindet", denn im
Eingabemodus werden OnTime-Prozeduren nicht ausgeführt.
Derselbe Effekt tritt ein, sobald ein integrierter Dialog
oder einfach eine MsgBox angezeigt wird.

Zu beachten wäre außerdem, dass der Timer beim Schließen der
Datei explizit zurückgesetzt werdwn muss. Wenn der User zwar
die betreffende Datei schließt, aber Excel nicht beendet,
wird sonst beim Ablauf der eingestellten Zeit die Datei
erneut geladen, um das Makro auszuführen. Dazu musst du
die Zeit nicht direkt angeben, sondern in einer globalen
Variablen speichern, die du in einem Modul mit

Public dteEnde As Date

deklarieren musst. Das obige Beispiel wäre dann wie folgt
abzuwandeln:

dteEnde = Now + TimeSerial(0, 30, 0)
Application.OnTime dteEnde, "Beenden"

In der Sub Workbook_BeforeClose musst du den Timer
zurücksetzen:

Application.OnTime dteEnde, "Beenden", , False

Alles in allem wäre das, jedenfalls für dich als bekennender
VBA-Neuling ein ziemlicher Aufwand für ein nicht völlig
befriedigendes Ergebnis.

Gruß

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
04.02.2008 16:21:26 Dieter Lichtenberg
NotSolved
Blau Aw:Nutzungszeit eines Dokumentes / Arbeitsmappe ei
05.02.2008 15:15:42 jh
NotSolved
06.02.2008 09:03:44 Dieter
NotSolved