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

Im Netzwerk prüfen ob eine XLS gerade geöffnet bzw

Im Netzwerk prüfen ob eine XLS gerade geöffnet bzw
31.05.2006 20:55:50
Heiko
Hallo,
ich komme leider nicht weiter. Hilfe! :-)
Ich arbeite mit einer XLS und schreibe per VBA-Code Daten in eine externe XLS (Zieldatei befindet sich auf dem Server-Laufwerk).
Problem:
Es greifen oft gleichzeitig mehrere Kollegen von mir auf diese Zieldatei zu.
Für diesen Moment würde Excel aber nun nicht speichern können, da die Zieldatei bereits geöffnet bzw. in Bearbeitung ist.
An der Stelle im Sub --- ActiveWorkbook.Save
gibt es einen Fehler, welchen ich gerne beseitigen würde. Auch eine MsgBox an dieser Stelle, dass der jeweilige Anwender diesen SUB nochmals ausführen soll, wäre schon eine Lösung.
Ich weiß leider noch nicht wie ich das lösen kann. Die Zieldatei hat einen "festen" Namen (z.B. H:\Gemeinsam\Ziel.xls).
Wer kann mir bitte helfen? Vielen Dank im Voraus.
Gruß
Heiko

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Im Netzwerk prüfen ob eine XLS gerade geöffnet
31.05.2006 21:36:10
Matthias
Hallo Heiko,
Ansatz:

Dim wb As Workbook
Set wb = Workbooks.Open(Filename:="H:\Gemeinsam\Ziel.xls")
If wb.ReadOnly Then
MsgBox "FEHLER: Die Datei ist gerade in Bearbeitung!"
Exit Sub
End If
'hier kann man dann sicher sein, dass du Schreibzugriff hast:

Gruß Matthias
AW: Im Netzwerk prüfen ob eine XLS gerade geöffnet
31.05.2006 23:53:53
Heiko
Hallo Matthias,
vielen Dank! Sieht sehr gut aus der Code. Etwas kürzer als der Nachstehende.
Den habe ich mir zwischenzeitlich aus dem VBA-Buch von Bernd Held geholt.
Ich hoffe beide, oder zumindest einer klappt :-))

Function DateiInBearbeitung(s As String) As Boolean
On Error Resume Next
Open s For Binary Access Read Lock Read As #1
Close #1
If Err.Number <> 0 Then
DateiInBearbeitung = True
Err.Clear
End If
End Function


Sub DateiFrei()
'hier den Pfad mit Dateinamen angeben
If DateiInBearbeitung("C:\Mappe2.xls") = False Then
'Call WieBisher
Else
MsgBox "Die zu speichernde Datei ist gerade in Bearbeitung !"
End If
End Sub

Anzeige
AW: Im Netzwerk prüfen ob eine XLS gerade geöffnet
01.06.2006 07:57:54
Matthias
Hallo Heiko,
der Vorteil bei deinem Code ist, dass die Datei zur Prüfung nicht komplett geladen werden muss.
Am besten ist es m.E., du prüfst erst (mit DateiinBearbeitung), ob die Datei frei ist, und nach dem Öffnen sicherheithalber, ob die Workbook-Eigenschaft ReadOnly auch wirklich False ist. Denn vielleicht hat in den Millisekunden zwischen Abfrage und Öffnen jemand gerade die Datei geöffnet... unwahrscheinlich, aber so kann man ganz sicher sein.
Gruß Matthias

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige