Live-Forum - Die aktuellen Beiträge
Datum
Titel
23.06.2025 13:53:13
23.06.2025 10:14:14
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mit Schleife prüfen, ob Datei existiert

Forumthread: Mit Schleife prüfen, ob Datei existiert

Mit Schleife prüfen, ob Datei existiert
19.09.2003 12:58:14
Martin
Hallo,

ich hoffe jemand kann mir helfen.

Ich habe zwei Codes gefunden und möchte beide so vereinen, dass in einer Schleife geprüft wird, ob eine Datei existiert. Sobald sie existiert (sie wird in einer Prozedur von einer externen Anwendung generiert), soll die Schleife unterbrochen und eine entpsrechende MsgBox-Meldung erscheinen.

Habt Ihr eine Idee?

Hier der Code, der wartet bis eine Datei geschlossen ist und öffnet sie anschließend (also Praktisch die Schleife):

Sub TestFileOpen()
Dim iOpen As Integer
Dim sFile As String
sFile = InputBox("Path and Filename:", , "c:\test\test.xls")
If sFile = "" Then Exit Sub
Do While TestOpen(sFile) = 1
Loop
Workbooks.Open sFile
End Sub



Private Function TestOpen(sPath As String) As Integer
If Dir(sPath) = "" Then
TestOpen = 2
Else
On Error GoTo ERRORHANDLER
Open sPath For Random Access Read Lock Read Write As #1
Close #1
End If
ERRORHANDLER:
If Err = 70 Then TestOpen = 1
End Function


-----------------------------------------------------------------------------

Hier der Code, der prüft, ob die Datei vorhanden ist:

Dim Datei As String
Datei = "C:\sap-daten\auswertung.db"
If Dir(Datei) <> "" Then
MsgBox " Datei existiert"
End If

Danke im Voraus.

Viele Grüße und ein schönes Wochenende

Martin Kaiser
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Mit Schleife prüfen, ob Datei existiert
19.09.2003 13:00:16
Hajo_Zi
Hallo Martin

warum Schleife???


Sub Datei_vorhanden()
'   von Berti Koern
Dim Fso, Dateiname
Set Fso = CreateObject("Scripting.FileSystemObject")
Dateiname = "D:\Eigene Dateien\Hajo\Adresse.xls"
'   Egänzung öffnung Hajo
If Fso.FileExists(Dateiname) Then
Workbooks.Open Dateiname
End If
End Sub


Gruß Hajo
Anzeige
AW: Mit Schleife prüfen, ob Datei existiert
19.09.2003 13:09:10
Martin
Hallo Hajo,

danke für Deinen Code.

Ich benötige aber eine Schleife. Ich starte in EXCEL ein Modul, das verschiedene (Vor-)Arbeiten leistet. Parallel dazu generiert eine externe Software eine Datei. Irgendwann sind die Vorarbeiten des VBA-Modules abgeschlossen und ich muss auf die Ergebnisdatei der externen Software warten.

Da ich nicht weiß, wie lange die externe Software zur Generierung der Datei benötigt, möchte ich mit Hilfe in einer Schleife laufen prüfen, ob die Datei vorhanden ist, oder nicht.

Sobald sie vorhanden ist, erscheint eine Meldung und es werden die weiteren Prozeduren sowie die Abschlussarbeiten durchgeführt.

Grüße

Martin
Anzeige
AW: Mit Schleife prüfen, ob Datei existiert
19.09.2003 13:17:02
Martin
Hallo,

ich glaube ich habe es geschafft...EXCEL prüft alle 5 Sekunden, ob die Datei vorhanden ist, oder nicht. Wenn ja, dann kommt die Meldung.

Sub TestFileOpen()
Dim iOpen As Integer
Dim sFile As String
sFile = "c:\temp\ic_zip\fertig.txt"
Do While TestOpen(sFile) = 1
NeueStunde = Hour(Now())
NeueMinute = Minute(Now())
NeueSekunde = Second(Now()) + 5
WarteZeit = TimeSerial(NeueStunde, NeueMinute, NeueSekunde)
Application.Wait WarteZeit
Loop
MsgBox "vorhanden!"
End Sub


Private Function TestOpen(sPath As String) As Integer
If Dir(sPath) = "" Then
TestOpen = 1
Else
TestOpen = 2
End If
End Function


Oder ist das stark Verbesserungswürdig?

Grüße

Martin
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Mit Schleife prüfen, ob eine Datei existiert


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste in den Projekt-Explorer und wähle Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub TestFileOpen()
        Dim sFile As String
        sFile = "c:\temp\ic_zip\fertig.txt" ' Pfad zur Datei anpassen
        Do While TestOpen(sFile) = 1
            Application.Wait Now + TimeValue("00:00:05") ' 5 Sekunden warten
        Loop
        MsgBox "Die Datei existiert!"
    End Sub
    
    Private Function TestOpen(sPath As String) As Integer
        If Dir(sPath) = "" Then
            TestOpen = 1 ' Datei existiert nicht
        Else
            TestOpen = 2 ' Datei existiert
        End If
    End Function
  4. Passe den Dateipfad in der Variable sFile an, damit er auf die gewünschte Datei verweist.

  5. Starte das Makro durch Drücken von F5 oder über das Menü Ausführen.


Häufige Fehler und Lösungen

  • Fehler: "Datei existiert nicht, aber ich bin sicher, dass sie vorhanden ist."

    • Lösung: Überprüfe den Pfad und den Dateinamen auf Tippfehler oder falsche Schreibweise.
  • Fehler: "Makro läuft endlos."

    • Lösung: Stelle sicher, dass die Datei tatsächlich in dem angegebenen Verzeichnis vorhanden ist oder passe die Wartezeit im Application.Wait an.

Alternative Methoden

Wenn du eine sofortige Rückmeldung benötigst, anstatt in einer Schleife zu prüfen, kannst du die FileSystemObject-Methode verwenden:

Sub Datei_vorhanden()
    Dim Fso As Object
    Dim Dateiname As String
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Dateiname = "D:\Eigene Dateien\Hajo\Adresse.xls" ' Pfad anpassen

    If Fso.FileExists(Dateiname) Then
        MsgBox "Die Datei existiert!"
    Else
        MsgBox "Die Datei existiert nicht!"
    End If
End Sub

Praktische Beispiele

  1. Warten auf eine Ergebnisdatei: Wenn deine externe Anwendung eine Datei generiert, die du abwarten möchtest, kannst du die oben genannten Schleifenmethoden verwenden.
  2. Integration in andere VBA-Projekte: Du kannst diese Logik in andere Projekte integrieren, wo du regelmäßig überprüfen musst, ob eine Datei vorhanden ist.

Tipps für Profis

  • Verwende DoEvents innerhalb der Schleife, um die Benutzeroberfläche von Excel responsiv zu halten.
  • Überlege, eine maximale Wartezeit einzuführen, um endlose Schleifen zu vermeiden.
  • Teste den Code gründlich, um sicherzustellen, dass er in verschiedenen Szenarien stabil läuft, insbesondere wenn du mit externen Anwendungen arbeitest.

FAQ: Häufige Fragen

1. Wie kann ich die Wartezeit zwischen den Prüfungen anpassen?
Du kannst die Zeit im Application.Wait Befehl ändern. Beispiel: Application.Wait Now + TimeValue("00:00:10") für 10 Sekunden.

2. Funktioniert dieser Code in Access?
Ja, du kannst ähnliche Ansätze in Access verwenden, um zu prüfen, ob eine Datei vorhanden ist. Der Code muss jedoch leicht angepasst werden, um die Access VBA-Syntax zu berücksichtigen.

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