ich möchte eine Anwendug schreiben, bei der mehrere Anwender in einem Netzwerk zeitgleich Daten eingeben, die dann in eine Zusammenfassugssdatei geschrieben werden.
dies soll nach etwa diesem Schema geschehen:
1. Anwender tippt Daten ein
2. Anwender drückt Speicherbutton, damit wird folgendes Makro gestartet:
- Zusammenfassungsdatei öffnen
- neue Daten an bestehende Datentabelle anhängen
- Zusammenfassungsdatei speichern und schliießen.
damit wäre sichergestellt, daß die Zusammenfassungsdatei jederzeit die eingegebenen Daten aller Anwender enthält.
Das funktioniert auch soweit auch ganz gut, aber wie sichere ich den Fall ab, wenn wirklich 2 Anwender zeitgleich auf die Zusammenfassungsdatei zugreifen wollen?
in diesem Fall müsste ja das Makro beim 2. solange mit dem Öffnen warten, bis der erste die Datei geschlossen und gespeichert hat.
Die Meldung "Datei wird momentan bearbeietet. wollen Sie sie schreibgeschützt öffen?" sollte natürlich auch nicht erscheinen, da der ganze Speichervorgang im Hintergrund laufen soll.
Das ist, etwas vereinfacht, mein bisheriges Makro:
Sub DatenSpeichern()
dim WB as Workbook
'--- hier Warteschleife, bis Datei zum Schreiben geöffnet werden kann, wie geht das ?
set WB = GetObject("F:\Pfad\Zusammenfassung.xls")
thisworkbook.Sheets(1).Rows(1).Copy WB.Sheets(1).Cells(rows.count,1).end(xlup).offset(1,0)
WB.Save
WB.Close
Thisworkbook.Sheets(1).Rows(1).ClearContents
End Sub
Wie baue ich jetzt eine Warteschleife ein, die mit GETOBJECT solange wartet, bis die Datei zum Schreiben geöffnet werden kann (oder sollte ich lieber Workbook.Open verwenden ?)Ich weiß, die Wahrscheinlichkeit ist klein, das 2 Anwender wirklich gleichzeitig auf die Datei zugreifen, da sie ja immer nur sehr kurz geöffnet ist, aber falls doch möchte ich vermeiden, daß das Makro die zwischenfrage stellet oder gar abbricht.
Gruß, Daniel
ps zur Info :
das ganze soll ein Kassensystem für eine Skibörse werden, in dem die Verkaufsdaten eigegeben werden.
zur Spitzenzeit sind 3-4 Rechner parallel im Einsatz und wegen dem Andrang (hoffentlich) darf das Makro keine Zicken machen.
Eine Programmierung in Access wird daran scheitern, daß ich davon keine Anhnung habe.