Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
720to724
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
720to724
720to724
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Konkurrierender Zugriff auf Dateien im Netzwerk

Konkurrierender Zugriff auf Dateien im Netzwerk
17.01.2006 10:50:50
tigersat
Hallo,
ich habe einige Dateien im Netzlaufwerk abgelegt, in der nur bestimmte Nutzer Zugriff haben.
Wenn aber ein Nutzer bereits eine Datei geöffnet hat, darf dieser damit arbeiten.
Solange diese Datei von ihm geöffnet ist, darf diese Datei aber nicht von den anderen Nutzern geöffnet werden.
In diesem Fall soll der Nutzer die Meldung erhalten, dass diese Datei von dem Nutzer gerade verwendet wird.
Ich habe für diese Vorgehensweise folgende Funktion mit deren Inhalt eingebaut:

Private Sub Workbook_Open()
Dim Full_Name, Workb As String
Full_Name = ActiveWorkbook.Path + "\" + ActiveWorkbook.Name
Workb = ActiveWorkbook.Name
On Error GoTo ErrorHandler
Open dateiname For Binary Access Read Lock Read As #1
Close #1
Exit Sub
ErrorHandler:
MsgBox "Die Datei wird von " + ActiveWorkbook.Author + " bearbeitet und ist daher gesperrt!" & Chr(13) & "Versuchen Sie es zu einem späteren Zeitpunkt noch einmal."
Application.Quit
End Sub

Trotzdem funktioniert das nicht.
Ist da irgendetwas, was ich übersehen habe?
Gruss
tigersat

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Konkurrierender Zugriff auf Dateien im Netzwerk
17.01.2006 11:00:01
ANdreas
Hallo,
wenn ein andere User die Datei schon offen hat, ist sie ja für den nächsten schreibgeschützt. Ich würde daher das einfach abfragen:

Private Sub Workbook_Open()
If ThisWorkbook.ReadOnly Then
MsgBox "Die Datei wird von " & ActiveWorkbook.Author & _
" bearbeitet und ist daher gesperrt!" & vbCrLf & _
"Versuchen Sie es zu einem späteren Zeitpunkt noch einmal."
Application.Quit
End If
End Sub

Hoffe das hilft weiter,
Andreas
AW: Konkurrierender Zugriff auf Dateien im Netzwerk
17.01.2006 14:19:16
tigersat
Hallo Andreas,
leider funktioniert das nicht.
In deinem Fall erscheint die Meldung, dass der Nutzer die Möglichkeit hat, die Datei schreibgeschützt zu öffnen, benachrichtigt zu werden oder die Sache abzubrechen.
Genau diese Meldungsbox darf nicht erscheinen!
Denn, wenn der Nutzer den Button "schreibgeschützt öffnen" anklickt kann er diese Datei unter einem anderen Namen abspeichern und später seine geänderten Daten auf die Originaldatei überschreiben. Damit sind die Änderungen eines andern Nutzers futsch.
Gruss
tigersat
Anzeige
AW: Konkurrierender Zugriff auf Dateien im Netzwerk
17.01.2006 15:02:48
WernerB.
Hallo ?,
in diesem Forum bitte mit Real(vor)namen auftreten; siehe dazu bitte auch die "Forums-FAQ". Danke!
Zu Deinem Problem:
Es ist zwar relativ einfach, festzustellen ob eine Datei im Netzwerk bereits geöffnet ist oder nicht - aber es gibt wohl keine einfache Lösung dafür, festzustellen, von wem sie ggf. geöffnet wurde. Dies ist wohl nur mit sehr viel Aufwand (Anwender-Name beim Öffnen in Textdatei schreiben und dort ggf. auslesen) möglich.
Mit dem nachstehenden Makro mit der dazu gehörigen benutzerdefinierten Funktion von Hans W. Herber kannst Du feststellen, ob eine bestimmte Datei bereits geöffnet wurde und dann entsprechend darauf reagieren:

Sub DateiZustand()
Dim Pfad As String, _
iOpen As Byte
Pfad = "X:\Daten\MappeA.xls"
'    Pfad = InputBox("Pfad und Datei:", , "X:\Daten\MappeA.xls")
'    If Pfad = "" Then Exit Sub
iOpen = DateiIstFrei(Pfad)
Select Case iOpen
Case 0
MsgBox "Datei " & Pfad & " ist frei !"
Case 1
MsgBox "Datei " & Pfad & " ist geöffnet !"
Case 2
MsgBox "Datei " & Pfad & " wurde nicht gefunden !"
End Select
End Sub


Function DateiIstFrei(sDateiname As String) As Byte
If Dir(sDateiname) = "" Then
DateiIstFrei = 2
Else
On Error GoTo ErrorHandler
Open sDateiname For Random Access Read Lock Read Write As #1
Close #1
End If
ErrorHandler:
If Err = 70 Then DateiIstFrei = 1
End Function

Viel Erfolg wünscht
WernerB.
P.S.: Dieses Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter !
Anzeige
AW: Konkurrierender Zugriff auf Dateien im Netzwerk
18.01.2006 08:50:19
Tobias
Hallo WernerB,
zunächst einmal sorry, dass ich mein Pseudonym in diesem Forum verwendet habe.
Es sollte eigentlich den Forum-Nutzern nicht wichtig sein, wer sich dahinter steckt.
Wichtig ist viel mehr der Inhalt des Textes.
Nun zum Thema zurück:
Willst du damit sagen, dass es also keine Möglichkeit gibt, in der Datei eine Funktion einzubauen, die dem Nutzer mitteilt, dass diese Datei bereits von einem anderen Nutzer genutzt wird?
Vielleicht habe ich hier nicht klar ausgedrückt. Hier noch einmal und ausführlicher:
Der Erstnutzer öffnet die Datei1 vom Explorer aus und kann diese Datei bearbeiten.
Der Zweitnutzer öffnet die Datei1 vom Explorer aus und bekommt die Meldung, dass die Datei1 vom Erstnutzer gerade bearbeitet worden und daher gesperrt ist.
Die Umsetzung dieser Vorgehensweise ist also im VBA doch nicht möglich? Oder doch?
Wie ich an deiner Antwort erkenne, geht dieser Vorgang nur, wenn man sich von einer Datei auf die andere Datei zugreifen möchte.
Gruss
Tobias
Anzeige
AW: Konkurrierender Zugriff auf Dateien im Netzwerk
18.01.2006 13:56:27
WernerB.
Hallo Tobias,
bezüglich der Verwendung eines Nickname brauchst Du Dich nicht bei mir entschuldigen - ich bin hier nicht der Oberaufseher des Forums. Mir ist es nur angenehmer im Umgang miteinander, wenn die Spielregeln des Forumsbetreibers einigermaßen eingehalten werden.
Zu Deinem Problem:
Dass die Datei "manuell" vom Explorer aus und nicht per Makro geöffnet werden soll, ging aus Deiner ersten Anfrage nicht hervor.
Ob sich in die Datei die von dir gewünschte VBA-Prozedur einbauen lässt, weiß ich nicht.
Im übrigen kann ich nur auf die Antwort von ANdreas vom 17.01.2006 15:13:31 verweisen.
Erschwerend kommt noch hinzu: Wenn ein Anwender mit entsprechend "krimineller" Energie die Ausführung von Makros abstellt, nützt Dir selbst die tollste VBA-Prozedur aller Zeiten nichts - und manche Anwender sind hier sehr findig.
Gruß
WernerB.
Anzeige
AW: Konkurrierender Zugriff auf Dateien im Netzwerk
17.01.2006 15:13:31
ANdreas
Hallo,
da liegt ja genau das Problem dann, denn die Meldung kommt vom Betriebssystem noch bevor überhaupt die Excel Datei geöffnet wird, geschweige denn ein Makro ausgeführt wird.
Das Problem des woanders speichern hast Du aber sowieso, denn niemand hindert einen User daran die Datei einfach zu kopieren und dann bei sich die Änderungen zu machen und damit dann bereits gemachte Änderungen wieder zu überschreiben, wenn er sie reinkopiert.
Gruß
Andreas

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige