Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Datei überprüfen ob sie da ist !

Begonnen von KlaSur, März 21, 2024, 16:29:38

⏪ vorheriges - nächstes ⏩

KlaSur

Hallo,

Ich möchte nur prüfen ob die Datei im Verzeichnis steht oder nicht! Das ist der Programmcode: 

Sub Ordner_Auslesen()
Dim fso As New FileSystemObject
Dim Pfad As String
Dim Ordner As Files
Dim Datei As File
Dim strdatei As String


Pfad = "C:/Datenbank"
strdatei = "Text2.txt"


If fso.FolderExists(Pfad) Then
   Set Ordner = fso.GetFolder(Pfad).Files
   
       For Each Datei In Ordner
       
         If InStr(Datei.NAME, strdatei) >= 1 Then
            'Datei.NAME = Replace(Datei.NAME, "Text1", "Rechnung")
            MsgBox ("Datei ist vorhanden!")
         Else
             MsgBox ("Bitte Verzeichnis bzw. Datei prüfen")
         End If
        Next Datei
End If

End Sub


mfg KlaSur

Köbi

Und was ist das Problem, bzw. die Frage?

Hier ein weiterer Code
Public Function FileExists(FileName As String) As Boolean
' Prüfen, ob eine Datei bereits existiert
' gibt True/False zurück, ob die Datei existiert

    Dim DirLength As Integer
   
    If Len(FileName & "") = 0 Then
        FileExists = False
        MsgBox "Bitte Verzeichnis bzw. Datei prüfen"
    Else
        On Error Resume Next
        DirLength = Len(Dir(FileName))
        If Err Or DirLength = 0 Then
            FileExists = False
        Else
            FileExists = True
        End If
        MsgBox "Datei ist vorhanden!"
    End If
   
End Function

KlaSur

Danke Köbi für deine Antwort obwohl keine Frage gestellt wurde!

Mein Prog. hat einen Fehler, aber ich find ihn nicht. Es läuft in die else Anweisung und ich muss 18 mal bestätigen bevor die MsgBox geschlossen wird (so viele Dateien sind im Ordner). Die Datei ist aber im Verzeichnis.

Werd mal dein Prog. ausprobieren !


Gruß KlaSur

PhilS

Zitat von: KlaSur am März 22, 2024, 09:09:56Mein Prog. hat einen Fehler, aber ich find ihn nicht. Es läuft in die else Anweisung und ich muss 18 mal bestätigen bevor die MsgBox geschlossen wird (so viele Dateien sind im Ordner). Die Datei ist aber im Verzeichnis.
Ja, das ist genau wie dein Code arbeitet.
Er schaut sich *jede* Datei an. Wenn es die richtige ist, benennt er sie um, wenn nicht gibt es die Meldung, dass die aktuelle Datei nicht die gesuchte ist.
@Köbi's Code funktioniert. Du solltest ihn aber nicht einfach unreflektiert übernehmen, sondern damit nachvollziehen, warum dein eigener Code die beschriebenen Probleme hat.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

KlaSur

Hallo PhilS

aber dann sollte ja mein Code funktionieren, aber er geht immer in die else Anweisung

If InStr(Datei.NAME, strdatei) >= 1 Then
              MsgBox ("Datei ist vorhanden!")
         Else
             MsgBox ("Bitte Verzeichnis bzw. Datei prüfen")
         End If

Ist die Funtion nur fürs unbenennen ?

Gruß KlaSur

PhilS

Zitat von: KlaSur am März 22, 2024, 11:36:38aber dann sollte ja mein Code funktionieren, aber er geht immer in die else Anweisung
Nein, nicht immer.
Wenn du hundert Dateien in dem Ordner hast, dann wird die eine gesuchte Datei umbenannt, wenn sie vorhanden ist.
Für die übrigen 99 Dateien wird die Meldung aus dem Else-Zweig angezeigt.

Nebenbei ist deine Prüfung mit InStr nicht sicher. Wenn es eine Datei mit dem Namen "Dies ist nicht die gesuchte Text2.txt Datei.xyz" gibt, wird diese ebenfalls umbenannt.
Wenn du in strdatei den vollständigen Dateinamen hast, kannst du auf Gleichheit prüfen.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

ebs17

ZitatIch möchte nur prüfen ob die Datei im Verzeichnis steht oder nicht!
Es geht auch so:
If Dir("C:\Datenbank\Text2.txt") > vbNullstring Then
   ' Datei existiert
Else
   ' nö
End If

Instr: Wenn Du alle Dateien im Ordner ermitteln willst, die im Dateinamen "Text2" enthalten, geht das mit Dir auch sehr übersichtlich.
Mit freundlichem Glück Auf!

Eberhard

KlaSur

Danke ebs17,

dann ist es der falsche Weg mit "Instr:". Möchte ja nur prüfen ob die Datei im Verzeichnis vorhanden ist.

Werd es mal mit "if Dir.." testen

Danke für Hilfe!!!

Gruß KlaSur