Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Speichern in eine datei mit mehreren Teilnehmern

Speichern in eine datei mit mehreren Teilnehmern
05.04.2014 18:18:32
Spenski
huhu ich mal wieder :D
ich habe 7 maschinen ,deren bediener mit hilfe einer userform informationen zu aufträgen anlegen sollen.
jede maschine hat eine eigene datei , die aber identisch aufgebaut sind.
die informationen aller sollen dann in eine datei immer in die nächste freie zeile gespeichert werden.
das klappt so weit :
Private Sub CommandButton1_Click()
Workbooks.Open "M:\WPA\GAEeingabe\VerlusteVundL.xlsx"
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(1, 0) = TextBox1.Text
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(0, 1) = TextBox11.Text
Sheets("tabelle1").Cells(65536, 1).End(xlUp).Offset(0, 2) = TextBox10.Text
ActiveWorkbook.Close True
End Sub
der vorgang des des speicherns dauert ja nur ca 2secunden. trotzdem könnte es durch einen dummern zufall dazu kommen das 2 bediener gleichzeitig was anlegen wollen.
gibt es irgendeinen befehl der zb sagt . die datei ist gerade geöffnet also versuche ich es in 3secunden noch ein mal. ich möchte eine fehlermeldeung bei den bediener userforms vermeiden
mfg
christian

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern in eine datei mit mehreren Teilnehmern
05.04.2014 18:27:35
Tino
Hallo,
müsste doch funktionieren wenn du die Arbeitsmappe freigibst
Gruß Tino

AW: Speichern in eine datei mit mehreren Teilnehmern
05.04.2014 18:36:13
Spenski
Hallo Tino
Trotzdem könnte es passieren das 2 gleichzeitig in die selbe Zeile schreiben wollen.
Ist zwar sehr unwahrscheinlich aber ich möchte es vermeiden.
Oder hab ich da jetzt irgendeinen Denkfehler? Wenn Bediener 1 übers Makro die Datei öffnet ist sie doch kurzzeitig für Bediener 2-7 schreibgeschützt?!?
Gruß
Christian

AW: Speichern in eine datei mit mehreren Teilnehmern
05.04.2014 18:43:43
Tino
Hallo,
ich meine bei einer freigegebener Datei können mehrere zur gleichen Zeit schreiben.
Jeder hat ja seine eigene Spalte.
Gruß Tino

Anzeige
AW: Speichern in eine datei mit mehreren Teilnehmern
05.04.2014 18:47:59
Spenski
Es sollen alle die gleichen Spalten benutzen ... A b c ...durch das Makro wird ja die nächste freie Zeile in spalte a gesucht.
Die Datei ist ja auch immer geschlossen und wird nur kurz zum einfügen automatisch geöffnet und wieder automatisch geschlossen
Das klappt ja auch alles wunderbar ...mir gehts nur darum was passiert wenn 2 gleichzeitig das machen...
Gruß
Christian

AW: Speichern in eine datei mit mehreren Teilnehmern
05.04.2014 19:12:57
Tino
Hallo,
hier mal was zum testen.
Ein Rest Risiko bleibt in dem Bereich zwischen der Do While Schleifen und dem öffnen.
Daher noch eine Prüfung ob der Schreibschutz nach dem Öffnen aktiv ist.
Evtl. würde ich in die Schleife noch einen Zähler einbauen, der diese nach zBsp. 10 Sekunden abbricht.
Private Sub CommandButton1_Click()
Dim sPath$, nReturn%
sPath = "M:\WPA\GAEeingabe\VerlusteVundL.xlsx"
'0 = nicht verwendet, 1 = Schreibgeschützt, 2 = nicht vorhanden
nReturn = TestOpen(sPath)
Do While nReturn  0
If nReturn = 2 Then
Exit Do 'nicht gefunden
End If
Application.Wait Now + TimeSerial(0, 0, 1)
DoEvents
nReturn = TestOpen(sPath)
Loop
If nReturn = 1 Then
With Workbooks.Open(sPath)
If .ReadOnly = False Then
With .Sheets("tabelle1")
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0) = TextBox1.Text
.Cells(.Rows.Count, 1).End(xlUp).Offset(0, 1) = TextBox11.Text
.Cells(.Rows.Count, 1).End(xlUp).Offset(0, 2) = TextBox10.Text
End With
.Close True
Else
.Close False
MsgBox "Die Datei ist Schreibgeschützt, versuchen sie es später!"
End If
End With
ElseIf nReturn = 2 Then
MsgBox "Datei nicht gefunden!"
End If
End Sub
Function TestOpen(sFile As String) As Integer
If Dir(sFile, vbNormal) = "" Then
TestOpen = 2
Else
On Error GoTo ERRORHANDLER
Open sFile For Random Access Read Lock Read Write As #99
Close #99
End If
ERRORHANDLER:
If Err.Number = 70 Then TestOpen = 1
End Function

Gruß Tino

Anzeige
AW: Speichern in eine datei mit mehreren Teilnehmern
05.04.2014 19:21:35
Spenski
Puh ...auf jedenfall schon mal danke für deine Mühe . Ich werde jetzt versuchen das Makro zu verstehen und werde mich aufführt jedenfall melden ob's geklappt hat
MfG
Christian

AW: Speichern in eine datei mit mehreren Teilnehmern
05.04.2014 19:43:34
Tino
Hallo,
ein fehler hat sich noch eingeschichen.
Nicht If nReturn = 1 Then sondern If nReturn = 0 Then
Private Sub CommandButton1_Click()
Dim sPath$, nReturn%
sPath = "M:\WPA\GAEeingabe\VerlusteVundL.xlsx"
'0 = nicht verwendet, 1 = Schreibgeschützt, 2 = nicht vorhanden
nReturn = TestOpen(sPath)
Do While nReturn  0
If nReturn = 2 Then
Exit Do 'nicht gefunden
End If
Application.Wait Now + TimeSerial(0, 0, 1)
DoEvents
nReturn = TestOpen(sPath)
Loop
If nReturn = 0 Then
With Workbooks.Open(sPath)
If .ReadOnly = False Then
With .Sheets("tabelle1")
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0) = TextBox1.Text
.Cells(.Rows.Count, 1).End(xlUp).Offset(0, 1) = TextBox11.Text
.Cells(.Rows.Count, 1).End(xlUp).Offset(0, 2) = TextBox10.Text
End With
.Close True
Else
.Close False
MsgBox "Die Datei ist Schreibgeschützt, versuchen sie es später!"
End If
End With
ElseIf nReturn = 2 Then
MsgBox "Datei nicht gefunden!"
End If
End Sub
Function TestOpen(sFile As String) As Integer
If Dir(sFile, vbNormal) = "" Then
TestOpen = 2
Else
On Error GoTo ERRORHANDLER
Open sFile For Random Access Read Lock Read Write As #99
Close #99
End If
ERRORHANDLER:
If Err.Number = 70 Then TestOpen = 1
End Function
Gruß Tino

Anzeige
AW: Speichern in eine datei mit mehreren Teilnehmern
05.04.2014 20:02:20
Spenski
hallo tino
wow es funktioniert wunderbar. erst ging gar nix und ich wollte schon n beispiel hochladen , da hab ich deine korrektur gesehen :D
wenn ich die datei geöffnet habe aber anlegen will komme ich in eine ladeschleife die alle ca 3sec unterbricht und wieder anfängt. schliesse ich die zieldatei legt er sofort an...
genau so wollte ich das haben :D
hab noch eine frage...ab wann würde dieser teil kommen? nach 30sec kam noch nix
.Close False
MsgBox "Die Datei ist Schreibgeschützt, versuchen sie es später!"
und was genau bewirkt dieser teil?
Function TestOpen(sFile As String) As Integer
If Dir(sFile, vbNormal) = "" Then
TestOpen = 2
Else
On Error GoTo ERRORHANDLER
Open sFile For Random Access Read Lock Read Write As #99
Close #99
End If
ERRORHANDLER:
If Err.Number = 70 Then TestOpen = 1
End Function
ich bin dir sehr dankbar.
gruss christian

Anzeige
AW: Speichern in eine datei mit mehreren Teilnehmern
05.04.2014 20:22:15
Tino
Hallo,
.close false wird ausgelöst wenn zufällig zwischen der
schleife und öffnen der datei diese geöffnet wird!
Die Function prüft ob die Datei ohne schreibschutz geöffnet werden kann
bzw. ob die Datei vorhanden ist.
Gruß Tino

AW: Speichern in eine datei mit mehreren Teilnehmern
05.04.2014 20:24:50
Spenski
super danke für die tolle erklärung.was ich vergessen hatte war das die zieldatei passwortgeschützt sein soll :(
aber ich versuche da mal was reinzubasteln. aber ich glaub da bin ich noch zu schlecht für
gruss christian

zieldatei passwortgeschützt
05.04.2014 22:15:24
Spenski
ich nochmal
bekomms leider nicht hin :( magst mir da nochmal helfen?
gruss
christian

Anzeige
AW: zieldatei passwortgeschützt
05.04.2014 23:29:06
Uwe
Hi Christian,
für Passwortschutz von Dateien schau doch mal auf Hajo's oder Beverly's Seiten nach. Ich meine da schon mal sowas gesehen zu haben.
http://excel-inn.de/
http://www.hajo-excel.de/
Grüße aus Dresden
Uwe

AW: zieldatei passwortgeschützt
06.04.2014 09:58:36
Tino
Hallo,
habe dir hier das Kennwort mit eingebaut.
Einmal zum Öffnen und einmal fürs Schreiben,
entsprechend anpassen bzw. rauslöschen was nicht benötigt wird.
Zudem habe ich nicht einen Zähler mit eingebaut sollte die Datei länger als 10 Sekunden
nicht frei sein, dann steigt der Code aus.
Private Sub CommandButton1_Click()
Dim sPath$, nReturn%, iTimer%
Const ObenKennwort$ = "christian"
Const SchreibLeseKennwort$ = "christian"
'max Wartezeit
iTimer = 10
'Pfad
sPath = "M:\WPA\GAEeingabe\VerlusteVundL.xlsx"
'0 = nicht verwendet, 1 = Schreibgeschützt, 2 = nicht vorhanden
nReturn = TestOpen(sPath)
Do While nReturn  0
If nReturn = 2 Then
Exit Do 'nicht gefunden
End If
If iTimer = 0 Then Exit Do 'Zeit abgelaufen
Application.Wait Now + TimeSerial(0, 0, 1)
DoEvents
iTimer = iTimer - 1
nReturn = TestOpen(sPath)
Loop
If nReturn = 0 Then
Application.DisplayAlerts = False
With Workbooks.Open(sPath, ReadOnly:=False, Password:=ObenKennwort, WriteResPassword:= _
SchreibLeseKennwort, IgnoreReadOnlyRecommended:=True)
If .ReadOnly = False Then
With .Sheets("tabelle1")
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0) = TextBox1.Text
.Cells(.Rows.Count, 1).End(xlUp).Offset(0, 1) = TextBox11.Text
.Cells(.Rows.Count, 1).End(xlUp).Offset(0, 2) = TextBox10.Text
End With
.Close True
Else
.Close False
MsgBox "Die Datei ist Schreibgeschützt, versuchen sie es später!"
End If
End With
Application.DisplayAlerts = True
ElseIf nReturn = 2 Then
MsgBox "Datei nicht gefunden!"
ElseIf nReturn = 1 Then
MsgBox "Die Datei ist Schreibgeschützt, versuchen sie es später!"
End If
End Sub
Function TestOpen(sFile As String) As Integer
If Dir(sFile, vbNormal) = "" Then
TestOpen = 2
Else
On Error GoTo ERRORHANDLER
Open sFile For Random Access Read Lock Read Write As #99
Close #99
End If
ERRORHANDLER:
If Err.Number = 70 Then TestOpen = 1
End Function

Gruß Tino

Anzeige
AW: zieldatei passwortgeschützt
06.04.2014 11:35:13
Spenski
Super danke
Hätte es glaub ich auch nicht allein hinbekommen.
Mit meinem ursprungsmakro hatte ich es dank Uwes tipp hinbekommen aber in dem neuen nicht.
Ich danke euch beiden und einen schönen Sonntag
Gruß christian

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige