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
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
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
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.
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
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.
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 IfInstr: Wenn Du alle Dateien im Ordner ermitteln willst, die im Dateinamen "Text2" enthalten, geht das mit Dir auch sehr übersichtlich.
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