Thema
|
Datum
|
Von Nutzer
|
Rating
|
Antwort
|
Automatisches Beenden einer Excel-Datei |
03.09.2006 20:23:38 |
wuerth |
|
|
|
04.09.2006 13:22:57 |
Schnolli |
|
|
|
04.09.2006 15:38:27 |
wuerth |
|
|
|
05.09.2006 10:00:20 |
Schnolli |
|
|
|
05.09.2006 18:41:51 |
wuerth |
|
|
|
06.09.2006 09:47:33 |
Schnolli |
|
|
|
06.09.2006 21:20:46 |
wuerth |
|
|
|
10.09.2006 14:54:05 |
wuerth |
|
|
|
05.09.2006 10:04:41 |
Schnolli |
|
|
|
10.09.2006 13:07:28 |
wuerth |
|
|
|
24.08.2015 10:41:18 |
klamafel |
|
|
Von:
wuerth |
Datum:
03.09.2006 20:23:38 |
Views:
3604 |
Rating:
|
Antwort:
|
Thema:
Automatisches Beenden einer Excel-Datei |
Hallo zusammen,
als Neuling in der Welt von "Visual Basic for Applications"
traue ich mir noch nicht allzuviel selber zu.
Problemstellung ist folgende:
Eine Datei soll automatisch nach einer gewissen Zeit Inaktivität geschlossen werden. Dazu habe ich in einer PC-Zeitschrift folgenden Code gefunden:
Arbeitsblatt:
-------------------------------------------------------------
Private Sub Workbook_Open()
ErsteMessung
Zeit = TimeSerial(0, 0, 10)
Application.OnTime Now + Zeit, "Position", False
End Sub
-------------------------------------------------------------
Modul:
Public Prüf As Boolean
Public Leave As Boolean
Public Zeit As Date
Public AddTime As Date
Public Posx1 As String
Public Posy1 As String
Public Posx2 As String
Public Posy2 As String
Public Koord As POINTAPI
Public Klass As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Sub ErsteMessung()
Klass = GetCursorPos(Koord)
Posx1 = Koord.x
Posy1 = Koord.y
End Sub
Sub Position()
Klass = GetCursorPos(Koord)
Posx2 = Koord.x
Posy2 = Koord.y
If Posx2 = Posx1 And Posy2 = Posy1 Then
Posx1 = Posx2
Posy1 = Posy2
Fenster
Else
Posx1 = Posx2
Posy1 = Posy2
Zeit = Time + AddTime
Application.OnTime Zeit, "Position"
End If
End Sub
Sub Beenden()
If Prüf = False Then Exit Sub
Unload frmCountdown
If ActiveWorkbook.Saved = False Then ActiveWorkbook.Save
Application.quit
End Sub
Sub Fenster()
If Leave = True Then Exit Sub
Prüf = True
Zähler = 10
frmCountdown.lblCountdown.Caption = Zähler
Application.OnTime Zeit + TimeSerial(0, 0, 10), "Beenden"
Countdown
frmCountdown.Show
End Sub
Sub Countdown()
If Leave = True Then Exit Sub
If Prüf = False Then Exit Sub
frmCountdown.lblCountdown.Caption = Zähler
If Zähler = 1 Then Exit Sub
Application.OnTime Now + TimeSerial(0, 0, 1), "Countdown"
Zähler = Zähler - 1
End Sub
Sub Abbrechen()
If Leave = True Then Exit Sub
Prüf = False
Unload frmCountdown
Application.OnTime Now + AddTime, "Position", False
End Sub
-------------------------------------------------------------
Die UserForm müsst Ihr euch leider denken :O)
So - jedenfalls wird mit dem Makro bei einer Inaktivität (d.h. keine Bewegung der Maus) nach Zwei Minuten (hier testhalber nach 10 Sekunden) die komplette Applikation - also Excel beendet.
Das funktioniert soweit eigentlich auch ganz gut.
Problem ist, dass alle anderen offenen Excel-Fenster auch mit beendet werden! Das will ich allerdings nicht!
Deswegen hab ich den Befehl:
Application.quit durch aktiveworkbook.close
ersetzt. Wir jetzt allerdings das File händisch geschlossen (KLICK rechts oben auf X ), so startet es auch nach der angegebenen Zeit (z.B. 2 Minuten) wieder und verweilt beim Bestätigungsfenster Makros aktivieren/deaktiviren. Verursacht wird dies meiner Meinung nach durch den Befehl
Application.OnTime Now + Zeit, "Position", False
Will man nun von einem anderen Rechner auf diese Datei zugreifen, so ist sie schreibgeschützt und der ganze Aufwand des automatischen Schließens per Makro war umsonst!!!
Kann mir jemand von Euch weiterhelfen?
Vielleicht gibt es ja auch einen anderen Befehl, der nur das entsprechende Fenster beendet, so dass man nach einer Inaktivität von bspw. 2 Minuten von einem anderen Rechner auf die Datei zugreifen kann.
Bin über jeden Tip und jede Hilfe dankbar!
VIELEN DANK IM VORAUS!
Greetz
WUERTH
PS: Habe auch schon versucht den "laufenden" Prozess zu killen... aber des funzt irgendwie auch nicht... |
- 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
Bitte geben Sie ein aussagekräftiges Thema an.
Bitte geben Sie eine gültige Email Adresse ein!
- 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
|
Automatisches Beenden einer Excel-Datei |
03.09.2006 20:23:38 |
wuerth |
|
|
|
04.09.2006 13:22:57 |
Schnolli |
|
|
|
04.09.2006 15:38:27 |
wuerth |
|
|
|
05.09.2006 10:00:20 |
Schnolli |
|
|
|
05.09.2006 18:41:51 |
wuerth |
|
|
|
06.09.2006 09:47:33 |
Schnolli |
|
|
|
06.09.2006 21:20:46 |
wuerth |
|
|
|
10.09.2006 14:54:05 |
wuerth |
|
|
|
05.09.2006 10:04:41 |
Schnolli |
|
|
|
10.09.2006 13:07:28 |
wuerth |
|
|
|
24.08.2015 10:41:18 |
klamafel |
|
|