Herbers Excel-Forum - das Archiv

Prüfung, ob Datei bereits geöffnet

Bild

Betrifft: Prüfung, ob Datei bereits geöffnet
von: Monika
Geschrieben am: 11.11.2003 16:18:02
Hallo,
wie kann ich beim Öffnen einer Arbeitsmappe feststellen, ob die Datei bereits von einem anderen Benutzer geöffnet ist??

Vielen Dank

Moni

Bild

Betrifft: AW: Prüfung, ob Datei bereits geöffnet
von: Klaus
Geschrieben am: 11.11.2003 16:43:26
Hallo Moni, Du kannst abfragen, ob die Datei schreibgeschützt geöffnet wurde (was der Fall ist, wenn sie ein anderer bereits offen hat):

Dim Wb As Workbook
Set Wb = Workbooks.Open("c:\temp\test.xls")
If Wb.ReadOnly = True Then
...
end if

mit
user = Wb.WriteReservedBy

kannst Du sogar herausfinden, wer die Datei geöffnet hat (sofern der Benutzername unter Optionen, Allgemein - richtig gepflegt ist).

Gruß
Klaus
Bild

Betrifft: Abfrage, w e r Datei bereits geöffnet hat
von: WernerB.
Geschrieben am: 12.11.2003 08:46:00
Hallo Klaus,

die Funktion "WriteReservedBy" kannte ich bisher noch nicht. Ich habe damit jetzt eine wenig herumexperimentiert, komme aber auf keinen grünen Zweig.

Ein Kollege hat auf meinen Wunsch eine bestimmte Excel-Datei geöffnet.
Nun versuche ich mittels "WriteReservedBy" mir anzeigen zu lassen, dass er sie bereits geöffnet hat.
Wenn ich die Datei danach auch noch (schreibgeschützt) öffne, wird mein Name ausgegeben; wenn ich sie nicht öffne, läuft das Makro immer auf einen Fehler.

Wie sollte die Makro-Sequenz denn aussehen, mit der ich feststellen kann, wer eine bestimmte Datei im Netzwerk bereits geöffnet hat (möglichst ohne sie zuvor selbst öffnen zu müssen)?

Auf eine kompetente Antwort bin ich gespannt.

Gruß WernerB.
Bild

Betrifft: AW: Prüfung, ob Datei bereits geöffnet
von: WernerB.
Geschrieben am: 12.11.2003 07:44:53
Hallo Monika,

mit diesem Makro und der zugehörigen benutzerdefinierten Funktion kannst Du feststellen, ob die Datei im Netzwerk bereits geöffnet ist:

Option Explicit


Function DateiIstFrei(sDateiname As String) As Boolean
Dim hFile As Integer
On Error Resume Next
hFile = FreeFile()
Open sDateiname For Random Access Read Lock Read Write As #hFile
If Err Then
DateiIstFrei = False
Else
DateiIstFrei = True
End If
Close #hFile
End Function




Sub DateiZustand2()
Dim Pfad As String
Pfad = "D:\Eigene Dateien\Tabellen\Privat\MappeA.xls"
If DateiIstFrei(Pfad) = False Then
MsgBox "Datei ist bereits geöffnet !"
Else
MsgBox "Datei ist z.Zt. nicht geöffnet !"
End If
End Sub


Viel Erfolg wünscht
WernerB.

P.S.: Das Forum lebt auch von den Rückmeldungen der Fragesteller an die Antworter (siehe Forums-FAQ).
Bild

Betrifft: Vielen Dank!
von: Moni
Geschrieben am: 12.11.2003 08:49:27
Hallo Klaus, Hallo Werner,

Vielen Dank Euch, es funktioniert.

PS an Werner: Ich gebe immer eine Rückmeldung. Ich habe die Frage gestern 2 Minuten vor Feierabend gestellt und bin gerade erst wieder gekommen und habe die Antworten gelesen.

Viele Grüße von

Moni
Bild

Betrifft: AW: Vielen Dank!
von: WernerB.
Geschrieben am: 12.11.2003 10:02:22
Hallo Monika,

mit dem Hinweis auf eine Rückmeldung wollte ich Dir nicht zu nahe treten.
Diesen schreibe ich immer standardmäßig zu meinen Erst-Antworten. Dies scheint mir allgemein - in Deinem Fall allerdings wohl eher nicht - für dringend geboten, weil viele Fragesteller sich nach oft mühsam erarbeiteten Antworten nicht mehr melden und man dann als Antwortender nicht weiß, ob der Fragesteller die Antwort überhaupt gelesen hat oder ob es noch irgendwelche Verständnisprobleme gibt, zumal manche Fragestellungen (in Deinem Fall nicht) oft nicht eindeutig formuliert sind.

Gruß WernerB.
Bild
Excel-Beispiele zum Thema " Prüfung, ob Datei bereits geöffnet"
Warnung, wenn Wert bereits vorhanden Eingabe auf bereits vorhanden prüfen und, wenn nein, einfügen
Prüfung, ob eine Datei im Netz bereits geöffnet ist