Nicht benutzte Dateien autom. schließen

Hallo Excelperten,

ich möchte Dateien (Excel 2000), welche geöffnet sind aber seit z.B. 15 min nicht mehr bearbeitet wurden, automatisch und ohne speichern schließen lassen.

Wer hat eine Idee.

Gruß
Roland

Eine Idee hab ich schon…
aber umsetzen musst Du sie selbst :stuck_out_tongue:

also - mittels der Workbook.open Möglichkeit startest Du ein Makro das sich selbst aufruft. etwa so:

Private Sub Workbook\_Open()
 Application.Run "makeadeadline"
End Sub

dieses makro aktiviert einen timer, dass es selbst in x sekunden neu gestartet wird - etwa so:

Private Sub makeadeadline()
 Const IntervalSek As Integer = 20 ' Sekunden
 Application.OnTime Now + TimeSerial(0, 0, (IntervalSek)), "makeadeadline"
End Sub

jetzt musst Du nurnoch zwischendrin eine Prüfung schreiben ob schon 15 Minuten vergangen sind…
dafür schreibst Du einfach bei jedem Wechsel des Focus einen neuen Wert in eine beliebige Zelle, etwa so:

Private Sub Workbook\_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
 targetcell = "Tabelle1!A1"
 Range(targetcell) = Time()
End Sub

den Wert liest Du dann bei der Prüfungsabfrage aus und wenn es zu lang her ist dann heisst es einfach ActiveWorkbook.Close
den speicherdialog musst Du u.U. halt noch unterdrücken…
und das muss wohl auch in jede Datei bzw könnte es sein dass es in der Normal.dot auch geht…

Hallo,

wird die Arbeit mit der Datei nicht gestört wenn nach jeder Änderung die aktuelle Zeit in einer Zelle eingetragen wird?

Ich habe noch ein Makro aus einem Buch welches eine „vernachlässigte Datei“ nach einer festgelegten Zeit schließen soll, jedoch klappt es nicht weil dieses Makro die Datei immer nach der vorgegebenen Zeit schließt, auch wenn sie momentan benutzt wird.

Sub ArbeitsmappeSchließen()
Dim l As Long
Const Puffer As Long = 120

l = Timer
Do While Timer

Hallo,

wird die Arbeit mit der Datei nicht gestört wenn nach jeder
Änderung die aktuelle Zeit in einer Zelle eingetragen wird?

nur wenn Du das mit
Range(zelle).Select
ActiveCell.Vaalue = wert
updatest.
Wenn Du sie mit Range(zelle).Value = wert updatest macht das nichts aus, nein.

Ich habe noch ein Makro aus einem Buch welches eine
„vernachlässigte Datei“ nach einer festgelegten Zeit schließen
soll, jedoch klappt es nicht weil dieses Makro die Datei
immer nach der vorgegebenen Zeit schließt, auch wenn
sie momentan benutzt wird.
Wo liegt dabei der Fehler?

Der Fehler liegt daran, dass der Vorgang eben nicht abgebrochen wird bei interaktion. Deswegen muss eben der check rein, wann sich was getan hat - und meiner Meinung nach ist da das beste mit workbook.selectionchange zu arbeiten…

Hallo,

vielen Dank, es hat nach etwas gebastel super geklappt.

Gruß
Roland

freut mich
vielleicht magst Du den kompletten Code hier nochmal posten?

Hallo,

es ist noch ein Problem aufgetaucht.

Immer dann wenn eine weitere Excel-Anwendung im Vordergrund geöffnet ist, kommt folgende Meldung:

Laufzeitfehler ‚1004‘
Die Methode ‚Range‘ für das Objekt ‚_Global‘ ist fehlgeschlagen

Private Sub Schließen()
 Dim Zeit1
 Dim Zeit2

**Zeit1 = Range("Tabelle1!A1").Value**
 Zeit2 = Time - TimeSerial(0, 1, 0)

 Const IntervalSek As Integer = 20 'Sekunden
 If Zeit1 

Nach "Debugging" bleibt Excel an der hier fettmarkierten Zeile hängen.

Was könnte ich dagegen tun?

Gruß
Roland

Immer dann wenn eine weitere Excel-Anwendung im Vordergrund
geöffnet ist, kommt folgende Meldung:

Laufzeitfehler ‚1004‘
Die Methode ‚Range‘ für das Objekt ‚_Global‘ ist
fehlgeschlagen

Hi Roland,
vielleicht musst du davor noch „activate“ für das Tabellenblatt machen.
Ansonsten, wie wäre es damit:
http://groups.google.de/groups?hl=de&lr=lang_de&neww…
Gruß
Reinhard

Private Sub Schließen()
Dim Zeit1
Dim Zeit2

Zeit1 = Range(„Tabelle1!A1“).Value
Zeit2 = Time - TimeSerial(0, 1, 0)

Const IntervalSek As Integer = 20 'Sekunden
If Zeit1

Nach „Debugging“ bleibt Excel an der hier fettmarkierten Zeile
hängen.

Was könnte ich dagegen tun?

Gruß
Roland