ich hätte mal eine frage. Wir haben auf dem Netzlaufwerk eine Excel 2003
Tabelle liegen (Anwesenheit) die von mehreren Leuten in mehreren Büros
bearbeitet wird. Nun passiert es immer wieder daß einige Leute diese Tabelle
öffnen, was ändern und dann (im Streß???) vom Rechner wegrennen und die
Tabelle nicht schließen. Solange kann keiner die Tabelle öffnen und
bearbeiten (oder nur als kopie öffnen).
Die Tabelle per VBA speichern und schließen kann ich. Ist es irgendwie
möglich einen VBA-code nach sagen wir 15 minuten (oder alle 15 minuten wäre
besser) zu aktivieren, der eine Abfragefenster öffnet und wenn dieses nicht
innerhalb einer minute quitiert wird die tabelle schließt? Wie programiere
ich eigentlich eine Zeitschleife die 1 minute wartet ob ein button in einem
formular gedrückt wurde und falls nicht den Code zum schließen startet?
Danke für die hilfen.
Mathias
PS: von hier habe ich keinen Internetzugang, also wäre es nett wenn ihr die
antworten hier posten könntet.
--
Regards
Frank Kabel
Frankfurt, Germany
Simon Mathias schrieb:
> ich hätte mal eine frage. Wir haben auf dem Netzlaufwerk eine Excel 2003
> Tabelle liegen (Anwesenheit) die von mehreren Leuten in mehreren Büros
> bearbeitet wird. Nun passiert es immer wieder daß einige Leute diese Tabelle
> öffnen, was ändern und dann (im Streß???) vom Rechner wegrennen und die
> Tabelle nicht schließen. Solange kann keiner die Tabelle öffnen und
> bearbeiten (oder nur als kopie öffnen).
> Die Tabelle per VBA speichern und schließen kann ich. Ist es irgendwie
> möglich einen VBA-code nach sagen wir 15 minuten (oder alle 15 minuten wäre
> besser) zu aktivieren, der eine Abfragefenster öffnet und wenn dieses nicht
> innerhalb einer minute quitiert wird die tabelle schließt? Wie programiere
> ich eigentlich eine Zeitschleife die 1 minute wartet ob ein button in einem
> formular gedrückt wurde und falls nicht den Code zum schließen startet?
für die Zeitschleife gibt es die OnTime-Methode.
Für die Abfrage verwendest du am besten eine UserForm.
Ziehe auf der UserForm ein Label mit dem Text auf
und füge dem Formular einen CommandButton hinzu.
Folgende Prozeduren müssen dann in den angegebenen Modulen gespeichert werden:
' DieseArbeitsmappe
Private Sub Workbook_Open()
' erste Abfrage nach 1 Minute anzeigen
ET1 = Now + TimeValue("00:01:00")
Application.OnTime EarliestTime:=ET1, _
Procedure:="UserAFK"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime EarliestTime:=ET1, _
Procedure:="UserAFK", _
Schedule:=False
End Sub
' ###################################################
' Standardmodul
Public ET1 As Double
Public ET2 As Double
Public Sub UserAFK()
UserForm1.Show
End Sub
Public Sub CloseWorkbook()
Unload UserForm1
ThisWorkbook.Close SaveChanges:=True
End Sub
' ###################################################
' Modul der UserForm1
Private Sub UserForm_Initialize()
' UserForm 10 Sek. lang anzeigen
ET2 = Now + TimeValue("00:00:10")
Application.OnTime EarliestTime:=ET2, _
Procedure:="CloseWorkbook"
End Sub
Private Sub CommandButton1_Click()
' Schliessen zurücksetzen
Application.OnTime EarliestTime:=ET2, _
Procedure:="CloseWorkbook", _
Schedule:=False
' in 1 Min. UserForm anzeigen
ET1 = Now + TimeValue("00:01:00")
Application.OnTime EarliestTime:=ET1, _
Procedure:="UserAFK"
Unload Me
End Sub
Wie kommst du damit weiter?
--
Mit freundlichen Grüssen
Melanie Breden
- Microsoft MVP für Excel -
http://excel.codebooks.de (Das Excel-VBA Codebook)
#Excel-Auftragsprogrammierung#
dumme Frage: warum gibst du die Datei nicht einfach frei, daß sie von
allen gleichzeit geöffnet werden kann? Beim Speichern werden die Werte,
die andere eingegeben haben, aktualisiert...
Grüße
hubert.
Simon Mathias schrieb:
Gruß Mathias
"Hubert Mock" <NewsAugus...@antichef.com> schrieb im Newsbeitrag
news:chf9j3$hdi$07$1...@news.t-online.com...
Gruß Mathias
"Frank Kabel" <frank...@freenet.de> schrieb im Newsbeitrag
news:u4NTZNlk...@TK2MSFTNGP09.phx.gbl...
Gruss Mathias
"Melanie Breden" <Melanie....@SPAMmvps.org> schrieb im Newsbeitrag
news:2ptaohF...@uni-berlin.de...
Simon Mathias schrieb:
> Auch eine Möglichkeit. Hab ich garnicht daran gedacht. Aber die andere
> Methoden gefallen mir besser. Was passiert bei dieser Freigabe wenn 2 User
> die gleiche Zelle ändern, und user 1 sie um 14.00 Uhr speichert, user 2 sie
> 5 minuten später speichert, obwohl er die tabelle vor user 1 offnete. Welche
> änderung wird dann übernommen?
XL merkt die Kollision und frägt nach. Ich hab mit dieser Funktionalität
nur mal kurz gespielt. Ich weiß auch nicht, ob das im Arbeitsgebrauch
auch zuverlässig funktioniert (ist bei MS nicht immer gewährleistet...).
Grüße
Hubert.
Danke und Gruß
Mathias
"Hubert Mock" <NewsAugus...@antichef.com> schrieb im Newsbeitrag
news:chibmf$l37$01$1...@news.t-online.com...