24.07.2020, 22:00 (Dieser Beitrag wurde zuletzt bearbeitet: 24.07.2020, 23:43 von Kuwer.)
Hallo alle zusammen.
Eins vorweg ich kenne mich absolut nicht in VBA aus :) Ich habe folgen Tabelle in Excel (siehe Ende) Die Dateien liegen alle in einem Ordner. Ich möchte jetzt das Excel mit hilfe von VBA den Ordner 1 erstellt und die Dateien 1 - 12 dort reinkopiert, dann Ordner 2 mit Dateien 13 - 20 usw. Außerdem soll angezeigt werden wenn eine Datei nicht gefunden. Würde sowas gehen und wie müsste der Code aussehen, habe mich schon durch so viele Codes und Hilfen gelesen, aber ich verstehe es einfach nicht.
Sub DateienKopieren() Dim strPfad As String Dim strZieldatei As String Dim strZielordner As String Dim rngDatei As Range strPfad = "F:\Uwe\Documents\Excel\Foren\CEF\Ordner0\" 'anpassen! For Each rngDatei In Cells(1, 2).CurrentRegion.Columns(2).Cells strZieldatei = rngDatei.Value If Dir(strPfad & strZieldatei) = strZieldatei Then strZielordner = rngDatei.Offset(, -1).MergeArea(1).Value If Dir(strPfad & strZielordner, vbDirectory) = "" Then MkDir strPfad & strZielordner End If FileCopy strPfad & strZieldatei, strPfad & strZielordner & "\" & strZieldatei Else rngDatei.Font.Strikethrough = True End If Next rngDatei End Sub
Ich habe noch eine kleine bitte. Sind leider 2 Sachen.
Das der Dateiname nicht durchgestrichen wird sondern in der Zelle neben dran nicht vorhanden steht. Eine Datei sieht wir folgt aus:
RL5_5M_IZ5U1PX_V3.xls
Jetzt ist es so das die Versionen sich ändern können, das heißt hinten würde anstatt V3 jetzt V4 stehen. Was sich nie ändert ist der 3. Block (IZ5U1PX) aber dort ohne das "I" also Z5U1PX. würde das auch gehen wenn nur das abgefragt werden würde und wenn ja wie?? :)
25.07.2020, 16:52 (Dieser Beitrag wurde zuletzt bearbeitet: 25.07.2020, 16:52 von Kuwer.)
Hallo,
teste mal damit:
Sub DateienKopieren_2() Dim rngDatei As Range Dim strPfad As String Dim strZieldatei As String Dim strZielordner As String Dim varTemp As Variant strPfad = "F:\Uwe\Documents\Excel\Foren\CEF\Ordner0\" 'anpassen! For Each rngDatei In Cells(1, 2).CurrentRegion.Columns(2).Cells varTemp = Split(rngDatei.Value, "_") If UBound(varTemp) = 3 Then strZieldatei = Dir(strPfad & "*_?" & Mid(varTemp(2), 2) & "_*") If Len(strZieldatei) Then strZielordner = rngDatei.Offset(, -1).MergeArea(1).Value If Dir(strPfad & strZielordner, vbDirectory) = "" Then MkDir strPfad & strZielordner End If FileCopy strPfad & strZieldatei, strPfad & strZielordner & "\" & strZieldatei rngDatei.Offset(, 1).Value = strZieldatei & " kopiert" Else rngDatei.Offset(, 1).Value = "nicht vorhanden" End If Else rngDatei.Offset(, 1).Value = "ungültiger Dateiname" End If Next rngDatei End Sub