Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1752to1756
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

mehrere Dateien finden mit selben Anfang

mehrere Dateien finden mit selben Anfang
17.04.2020 09:37:14
Ronald
Guten Tag an alle
Ich möchte ein kleines Projekt schreiben, indem aus einer Excelliste Dateinamen ausgelesen und
diese ineinem Ordner gesucht und in einen anderen Ordner kopiert werden.
Wenn der Dateiname eindeutig ist, ist das kein Problem und funktioniert auch. Beispiel:
1234567-1.pdf
Es kann aber sein, daß diese Datei mehrmals vorkommt, jedoch mit Ergänzung:
1234567-1 gekantet.pdf
1234567-1 geschweisst.pdf
1234567-1 gelasert.pdf
1234567-1 gesamt.pdf
Wäre toll, wenn jemand eine Idee hat, wie ich alle diese Dateien suchen und finden kann und
wie ich diese einzelnen Dateinamen, mit einer Schleife oder wie auch immer, in eine Variable
hineinbekomme, um diese dann kopieren zu können.
Vielen Dank im Voraus für Eure Hilfe.
Gruss Ronald

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mehrere Dateien finden mit selben Anfang
17.04.2020 09:47:19
Nepumuk
Hallo Ronald,
ein Beispiel:
Option Explicit

Public Sub Beispiel()
    
    Const INPUT_FOLDER As String = "H:\Test\" 'Anpassen !!!
    Const OUTPUT_FOLDER As String = "G:\Test\" 'Anpassen !!!
    
    Dim strFile As String, strFileName As String
    
    strName = "1234567-1"
    
    strFileName = Dir$(INPUT_FOLDER & strName & "*.pdf")
    
    Do Until strFileName = vbNullString
        
        Call FileCopy(Source:=INPUT_FOLDER & strFileName, Destination:=OUTPUT_FOLDER & strFileName)
        
        strFileName = Dir$
        
    Loop
End Sub

Gruß
Nepumuk
Anzeige
Da ist noch ein Fehler drin.
17.04.2020 09:49:45
Nepumuk
Nochmal Hallo,
so ist es richtig:
Option Explicit

Public Sub Beispiel()
    
    Const INPUT_FOLDER As String = "H:\Test\" 'Anpassen !!!
    Const OUTPUT_FOLDER As String = "G:\Test\" 'Anpassen !!!
    
    Dim strFile As String, strFileName As String
    
    strFile = "1234567-1"
    
    strFileName = Dir$(INPUT_FOLDER & strFile & "*.pdf")
    
    Do Until strFileName = vbNullString
        
        Call FileCopy(Source:=INPUT_FOLDER & strFileName, Destination:=OUTPUT_FOLDER & strFileName)
        
        strFileName = Dir$
        
    Loop
End Sub

Gruß
Nepumuk
Anzeige
AW: Da ist noch ein Fehler drin.
17.04.2020 10:03:13
Ronald
Vielen Dank.
Ich werde das mal ausprobieren.
Stellt sich mir nur die Frage, ob die Pfade als Const deklariert sein müssen,
oder ob man hier auch einen String angeben kann. Also beispielsweise:
Call FileCopy(strQuellpaf & strFileName, strZielpfad & strFilename)
Bitte sag mir auch noch, was strFileName = Dir$ macht.
Danke und Gruss Ronald
AW: Da ist noch ein Fehler drin.
17.04.2020 10:10:08
Nepumuk
Hallo Ronald,
1. Natürlich kannst du an Stelle der Konstanten auch Variablen benutzen.
2. Die Zeile sucht die nächste Datei die den Suchkriterien des 1. Aufrufs entspricht.
Gruß
Nepumuk
AW: Da ist noch ein Fehler drin.
17.04.2020 10:33:07
Ronald
Habe ich probiert. Er scheint die Dateien nicht zu finden.
Ich habe ein paar Screenshots gemacht.
Schau sie Dir mal bitte an.
Was habe ich falsch gemacht?
https://www.herber.de/bbs/user/136803.zip
Danke und Gruss
Ronald
Anzeige
AW: Da ist noch ein Fehler drin.
17.04.2020 11:43:47
Nepumuk
Hallo Ronald,
bei der Variablen "strPfad_zum_STEP_Ordner" fehlt der abschließende Backslash.
Gruß
Nepumuk
AW: Da ist noch ein Fehler drin.
17.04.2020 11:52:35
Ronald
Du hast recht. Bei meinem vorherigen Versuch, wo ich Deinen Code noch nicht drin hatte, hatte ich das mit drin. Dieses Mal habe ich das vergessen. Darauf hätte ich eigentlich auch selber kommen können.
Ich habs probiert und (nachdem ich noch einen kleinen Fehler gefunden habe) es läuft nun bestens.
Vielen herzlichen Dank!!
Gruss Ronald
AW: Da ist noch ein Fehler drin.
22.04.2020 16:50:03
Ronald
Grüß Dich nochmal
Ich habe hierzu noch eine Frage. Es soll PDF suchen, die am Anfang und am Ende gleich sind,
jedoch nicht in der Mitte und von denen dann die Datei mit dem jüngsten Änderungsdatum nehmen zum
nutzen.
Beispiel: "12345-1 A geschweisst.pdf"
Dieses könnte auch also "12345-1 B geschweisst" oder "12345-1 geschweisst" vorkommen.
Ich würde hier wohl eine Routine schreiben, bei der geprüft wird, ob es mehr als eine Datei mit dem selben Anfang findet (also mehr als 1x "12345-1" vorkommt und diese separiert und dann das Ende des String untersucht, ob das Ende auch gleich ist. Um zu wissen, wie weit von rechts ich rückwärts betrachte, würde ich ein Leerzeichen oder Bindestrich suchen lassen und ab diesem dann entsprechend den Rest vom String nach rechts vergleichen, ob dies auch mehrmals da ist. Falls ja, uß nun irgendwie herausgesucht werden, welche Datei welches Änderungsdatum hat. Kann mir jemand sagen, wie ich dies bewerkstelligen kann?
Danke im Voraus.
Gruß Ronald
Anzeige
AW: Da ist noch ein Fehler drin.
22.04.2020 17:24:10
Nepumuk
Hallo Ronald,
dann einfach in dieser Zeile:
strFileName = Dir$(INPUT_FOLDER & strFile & "*.pdf")

den Begriff einfügen. Also:
strFileName = Dir$(INPUT_FOLDER & strFile & "*geschweisst.pdf")

AW: mehrere Dateien finden mit selben Anfang
17.04.2020 10:20:50
fcs
Hallo Ronald,
man muss dann die Dateinamen mit der DIR-Methode im Ordner suchen und in einem Daten-Array sammeln.
LG
Franz
Sub Dateiliste_erstellen_kopieren()
Dim varFile() As String, intF As Integer
Dim wksListe As Worksheet, zei As Integer
Dim sFileName As String
Dim varOrdner As Variant, varZielOrdner As Variant
Set wksListe = ActiveSheet 'ggf. ActiveWorkbook.Worksheets("Tabelle XYZ")
'Ordner mit pdf-Dateien auswählen
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte Ordner/Verzeichnis mit den PDF-Dateien auswählen"
If .Show = -1 Then
varOrdner = .SelectedItems(1)
Else
Exit Sub
End If
End With
With wksListe
'Dateinamen in Spalte A ab Zeile 2 abarbeiten
For zei = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
sFileName = Dir(varOrdner & "\" _
& Replace(.Cells(zei, 1).Text, ".pdf", "*.pdf"), vbNormal)
Do Until sFileName = ""
intF = intF + 1
ReDim Preserve varFile(1 To intF)
varFile(intF) = sFileName
sFileName = Dir
Loop
Next
End With
If intF = 0 Then
MsgBox "Keine Dateien im Ordner """ & varOrdner & """ gefunden!"
Else
'Zielordner auswählen
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bitte Ziel-Ordner/Verzeichnis für die PDF-Dateien auswählen"
If .Show = -1 Then
varZielOrdner = .SelectedItems(1)
Else
Exit Sub
End If
End With
'Dateien in Zielordner kopieren
For intF = 1 To UBound(varFile)
VBA.FileCopy varOrdner & "\" & varFile(intF), varZielOrdner & "\" & varFile(intF)
Next
End If
End Sub

Anzeige
AW: mehrere Dateien finden mit selben Anfang
17.04.2020 11:05:22
Ronald
Grüß Dich Franz
Danke für Deinen Vorschlag. Mit Öffnen-Fenster nützt es mir nur leider nichts. Es muß automatisiert aus der Excelliste auslesen.
Trotzdem danke!
Gruss Ronald

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige