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

Forumthread: VBA-Prüfen ob Datei bereits offen, dann nichts

VBA-Prüfen ob Datei bereits offen, dann nichts
23.11.2007 17:31:18
Fabio
Hallo zusammen,
ich öffne per VBA-Code verschiedene Dateien - lese Daten aus (etc.etc.)
Mit der Zeile
Workbooks.Open Filename:="D:\Fussball\Tore2006\JugendA.xls"
öffne ich die entsprechende Datei.
Wie es der Zufall will, arbeitet prompt jemand mit dieser Datei - also will ich folgendes erreichen :
  • Prüfe vor dem öffnen der Datei, ob die Datei offen ist

  • Wenn ja - dann mache nichts (=Abbrechen des öffnen) und springe im VBA zum nächsten "Workbooks.Open-Befehl" (und mache da die selbe Prüfung)
  • Wenn nicht geöffnet, dann setze die Prozedur fort

  • Wer weiß da Rat ?
    Danke!
    Fabio

    Anzeige

    2
    Beiträge zum Forumthread
    Beiträge zu diesem Forumthread

    Betreff
    Datum
    Anwender
    Anzeige
    AW: VBA-Prüfen ob Datei bereits offen, dann nichts
    23.11.2007 18:03:12
    Josef
    Hallo Fabio,
    eine Möglichkeit.
    ' **********************************************************************
    ' Modul: Modul1 Typ: Allgemeines Modul
    ' **********************************************************************

    Option Explicit

    Public Enum XL_FILESTATUS
        XL_UNDEFINED = -1
        XL_CLOSED
        XL_OPEN
        XL_DONTEXIST
    End Enum

    Public Function FileStatus(xlFile As String) As XL_FILESTATUS

    On Error Resume Next

    Dim File%: File = FreeFile

    Err.Clear

    Open xlFile For Binary Access Read Lock Read As #File
    Close #File

    Select Case Err.Number
        Case 0: FileStatus = XL_CLOSED
        Case 70: FileStatus = XL_OPEN
        Case 76: FileStatus = XL_DONTEXIST
        Case Else: FileStatus = XL_UNDEFINED
    End Select

    End Function

    Sub nn()
    Dim strFile As String

    strFile = "D:\Fussball\Tore2006\JugendA.xls"

    If FileStatus(strFile) = XL_CLOSED Then
        Workbooks.Open Filename:=strFile
    End If

    End Sub

    Gruß Sepp

    Anzeige
    AW: VBA-Prüfen ob Datei bereits offen, dann nichts
    24.11.2007 10:26:00
    Fabio
    Servus Sepp,
    das teste ich mal und versuche das einzubauen. Sei erstmal bedankt (!)
    Fabio
    ;

    Forumthreads zu verwandten Themen

    Entdecke relevante Threads

    Schau dir verwandte Threads basierend auf dem aktuellen Thema an

    Alle relevanten Threads mit Inhaltsvorschau entdecken
    Anzeige
    Anzeige

    Infobox / Tutorial

    VBA-Prüfen ob Datei bereits offen


    Schritt-für-Schritt-Anleitung

    Um in Excel VBA zu prüfen, ob eine Datei bereits geöffnet ist, kannst du den folgenden Code verwenden. Dieser Code hilft dir, die Datei nur zu öffnen, wenn sie nicht bereits in Gebrauch ist:

    Option Explicit
    
    Public Enum XL_FILESTATUS
        XL_UNDEFINED = -1
        XL_CLOSED
        XL_OPEN
        XL_DONTEXIST
    End Enum
    
    Public Function FileStatus(xlFile As String) As XL_FILESTATUS
        On Error Resume Next
        Dim File%: File = FreeFile
        Err.Clear
        Open xlFile For Binary Access Read Lock Read As #File
        Close #File
    
        Select Case Err.Number
            Case 0: FileStatus = XL_CLOSED
            Case 70: FileStatus = XL_OPEN
            Case 76: FileStatus = XL_DONTEXIST
            Case Else: FileStatus = XL_UNDEFINED
        End Select
    End Function
    
    Sub nn()
        Dim strFile As String
        strFile = "D:\Fussball\Tore2006\JugendA.xls"
    
        If FileStatus(strFile) = XL_CLOSED Then
            Workbooks.Open Filename:=strFile
        End If
    End Sub

    Dieser Code definiert eine Funktion FileStatus, die den Status der Datei prüft. Wenn die Datei nicht geöffnet ist, wird sie geöffnet.


    Häufige Fehler und Lösungen

    • Fehler: "Datei nicht gefunden"

      • Überprüfe den Dateipfad und stelle sicher, dass die Datei tatsächlich existiert.
    • Fehler: "Datei ist bereits geöffnet"

      • Dieser Fehler tritt auf, wenn du versuchst, eine Datei zu öffnen, die bereits von einem anderen Benutzer verwendet wird. Verwende die oben genannte Funktion, um dies zu verhindern.

    Alternative Methoden

    Eine weitere Möglichkeit, die Verfügbarkeit einer Datei zu überprüfen, ist die Verwendung von Dir. Hier ein Beispiel:

    If Dir("D:\Fussball\Tore2006\JugendA.xls") <> "" Then
        MsgBox "Die Datei ist vorhanden."
    Else
        MsgBox "Die Datei ist nicht vorhanden."
    End If

    Diese Methode prüft nur, ob die Datei existiert, nicht ob sie geöffnet ist. Für eine umfassende Prüfung solltest du die erste Methode verwenden.


    Praktische Beispiele

    Wenn du mehrere Dateien auf einmal prüfen und öffnen möchtest, kannst du die Funktion in einer Schleife verwenden:

    Dim filesToCheck As Variant
    filesToCheck = Array("D:\Fussball\Tore2006\JugendA.xls", "D:\Fussball\Tore2006\JugendB.xls")
    
    Dim f As Variant
    For Each f In filesToCheck
        If FileStatus(f) = XL_CLOSED Then
            Workbooks.Open Filename:=f
        End If
    Next f

    Diese Methode ist sehr nützlich, wenn du mehrere Dateien in einem Skript verwalten möchtest.


    Tipps für Profis

    • Error Handling optimieren: Verwende On Error GoTo anstelle von On Error Resume Next, um die Fehlerbehandlung zu verbessern.
    • Dateipfade dynamisch gestalten: Überlege, den Dateipfad als Parameter zu übergeben, um die Funktion flexibler einzusetzen.
    • Testing in einer Entwicklungsumgebung: Teste deinen Code immer in einer sicheren Umgebung, bevor du ihn in der Produktion einsetzt.

    FAQ: Häufige Fragen

    1. Wie kann ich prüfen, ob eine Datei in Access geöffnet ist? Verwende eine ähnliche Logik wie im Excel VBA, aber passe die Funktionen an die Access-Objekte an.

    2. Welche Excel-Version wird benötigt? Der oben dargestellte Code funktioniert in Excel 2007 und späteren Versionen. Stelle sicher, dass du die richtigen Verweise gesetzt hast, falls du zusätzliche Funktionen verwendest.

    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