Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: 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
Anzeige

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
Anzeige
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
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Im Netzwerk prüfen, ob eine XLS-Datei geöffnet ist


Schritt-für-Schritt-Anleitung

Um in Excel VBA zu prüfen, ob eine Datei geöffnet ist, kannst du den folgenden Code verwenden:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Modul hinzufügen: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xls)“ > Einfügen > Modul.

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    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()
       Dim dateipfad As String
       dateipfad = "H:\Gemeinsam\Ziel.xls" ' Pfad zur Zieldatei anpassen
       If DateiInBearbeitung(dateipfad) = False Then
           MsgBox "Die Datei kann gespeichert werden."
           ' Hier kann der Speichervorgang erfolgen
       Else
           MsgBox "Die zu speichernde Datei ist gerade in Bearbeitung!"
       End If
    End Sub
  4. Ausführen: Führe das Makro DateiFrei() aus, um zu testen, ob die Datei geöffnet ist.


Häufige Fehler und Lösungen

  • Fehler: "Die Datei kann nicht geöffnet werden"
    Lösung: Stelle sicher, dass der Pfad zur Datei korrekt ist und dass du die erforderlichen Berechtigungen hast.

  • Fehler: "Die zu speichernde Datei ist gerade in Bearbeitung!"
    Lösung: Überprüfe, ob ein anderer Benutzer die Datei tatsächlich geöffnet hat. Du kannst auch den Code anpassen, um zusätzliche Informationen zu liefern.


Alternative Methoden

Eine andere Möglichkeit, um zu prüfen, ob eine Datei von einem anderen Benutzer geöffnet ist, ist die Verwendung des Workbooks.Open-Befehls. Hier ein Beispiel:

Sub CheckWorkbook()
    Dim wb As Workbook
    On Error Resume Next
    Set wb = Workbooks.Open(Filename:="H:\Gemeinsam\Ziel.xls", ReadOnly:=True)
    If wb Is Nothing Then
        MsgBox "FEHLER: Die Datei ist gerade in Bearbeitung!"
    Else
        wb.Close SaveChanges:=False
        MsgBox "Die Datei ist nicht geöffnet."
    End If
End Sub

Praktische Beispiele

Nehmen wir an, du arbeitest in einem Team und jeder hat Zugriff auf eine gemeinsame Excel-Datei. Du kannst den oben genannten Code verwenden, um vor dem Speichern von Daten zu prüfen, ob die Datei bereits in Benutzung ist. Dies verhindert, dass mehrere Benutzer gleichzeitig versuchen, Änderungen vorzunehmen, was zu Datenverlust führen könnte.


Tipps für Profis

  • Nutze On Error Resume Next mit Bedacht, um unerwartete Fehler zu vermeiden. Stelle sicher, dass du die Fehlerbehandlung korrekt implementierst.
  • Implementiere eine Logging-Funktion, um zu protokollieren, wann und von wem die Datei geöffnet wurde. Dies kann nützlich sein für die Netzwerk-Dokumentation.
  • Denke daran, regelmäßig Backups der Datei zu erstellen, um Veränderungen zu sichern, während mehrere Benutzer darauf zugreifen.

FAQ: Häufige Fragen

1. Wie erkenne ich, ob die Datei von einem anderen Benutzer geöffnet ist?
Du kannst die Funktion DateiInBearbeitung verwenden, um zu prüfen, ob die Datei bereits in Benutzung ist.

2. Was passiert, wenn ich die Datei trotzdem öffne?
Wenn die Datei geöffnet ist, wird sie im schreibgeschützten Modus geöffnet. Du kannst keine Änderungen vornehmen, bis die Datei geschlossen wird.

3. Gibt es eine Möglichkeit, alle geöffneten Dateien im Netzwerk zu sehen?
Leider kannst du mit Excel VBA nicht direkt alle geöffneten Dateien im Netzwerk auflisten. Du müsstest auf Serverebene nachsehen oder spezielle Netzwerktools verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige