Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Alle Dateien in Unterordner kopieren

VBA - Alle Dateien in Unterordner kopieren
03.10.2007 19:35:00
Fritz_W
Hallo Experten,
ich würde gerne aus einer geöffneten Exceldatei alle Dateien, die sich im Ordner der geöffneten Exceldatei befinden in sämtliche Unterordner dieses Ordners (nicht jedoch in weitere Unterverzeichnisse) kopieren.
Die Exceldatei aus der ich das Makro starte, sollte jedoch nicht kopiert werden.
Für eure Unterstützung bereits an dieser Stelle besten Dank.
mfg
Fritz

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Alle Dateien in Unterordner kopieren
04.10.2007 15:11:53
Tino
Hallo Fritz_W,
hier habe ich mal etwas für dich.

Sub neu()
Dim i As Variant, unterordner As Variant
Dim fso, f1 As Object
Dim strDateiName As String
Const verz = "c:\tino\"       'Kopieren von
Set fso = CreateObject("Scripting.filesystemobject")
Set f1 = fso.GetFolder(verz)
ChDir verz
With Application.FileSearch
.NewSearch
.LookIn = verz
.SearchSubFolders = False
.Filename = "*.*" 'Datei Typ
.Execute
For Each unterordner In f1.subfolders
For i = 1 To .FoundFiles.Count
'hier Dateinamen extrahieren
strDateiName = Right(.FoundFiles(i), Len(.FoundFiles(i)) - InStrRev(.FoundFiles(i), "\"))
'und hier kopieren
If strDateiName = ActiveWorkbook.Name Then GoTo nächste:
FileCopy .FoundFiles(i), unterordner & "\" & strDateiName
nächste:
Next i
Next unterordner
End With
Set fso = Nothing
Set f1 = Nothing
End Sub


Gruss
Tino

Anzeige
AW: VBA - Alle Dateien in Unterordner kopieren
04.10.2007 18:40:54
Fritz_W
Hallo Tino,
bin eben von der Arbeit zurück und freue mich, dass sich doch noch jemand an diese - offensichtlich nicht einfache - Aufgabe gewagt hat. Vielen Dank für Deine Arbeit!!
Ich habe das Makro getestet, leider funktioniert es nicht.
Meine VBA-Kenntnisse reichen jedoch nicht aus, um die Ursache dafür zu erkennen. Das Makro "läuft endlos", und trotzdem wurde nicht eine einzige Datei in einen der - im meinem Testfall - 5 vorhandenen Unterordner kopiert.
Muss ich etwas beachten oder kannst Du Dir das Ganze erklären!
Gruß
Fritz

Anzeige
AW: VBA - Alle Dateien in Unterordner kopieren
04.10.2007 19:06:00
Tino
Hallo,
im Code musst du
c:\tino\ mit dem Pfad ersetzen !! wo deine Excel-Datei !! liegt,
am ende vom Pfad "\" nicht vergessen. (die Excel-Datei muss dort abgespeichert sein!!!)
Mit der Taste F8 kannst du dieses Makro in einzelschritten ausführen.
Bei For i = 1 To .FoundFiles.Count angekommen mit der Maus einfach über unterordner gehen nun müsste der Pfad zum Unterordner angezeigt werden. (alles ok?)
weider mit F8
bei FileCopy .FoundFiles(i), unterordner & "\" & strDateiName angekommen mit der Maus
über strDateiName gehen, nun muss die erste gefundene Dateiname angezeigt werden?
Sollte dies nicht gehen, müsstest du mir die Pfadstrucktur geben damit ich deine verhältnisse nachbauen kann.
MfG
Tino

Anzeige
AW: VBA - Alle Dateien in Unterordner kopieren
04.10.2007 20:16:00
Tino

Hallo,
hier die angepasste Variante, bei dieser musst du
den Pfad nicht mehr angeben.

 


Aber die Excel-Datei,
muss in dem Ordner gespeichert sein
wo sich die besagten Unterordner befinden!!!!!



Sub neu()
Dim i As Variant, unterordner As Variant
Dim fso, f1 As Object
Dim strDateiName As String, verz As String
verz = ActiveWorkbook.Path & "\"      'Kopieren von
Set fso = CreateObject("Scripting.filesystemobject")
Set f1 = fso.GetFolder(verz)
ChDir verz
With Application.FileSearch
.NewSearch
.LookIn = verz
.SearchSubFolders = False
.Filename = "*.*" 'Datei Typ
.Execute
For Each unterordner In f1.subfolders
For i = 1 To .FoundFiles.Count
'hier Dateinamen extrahieren
strDateiName = Right(.FoundFiles(i), Len(.FoundFiles(i)) - InStrRev(.FoundFiles(i), "\"))
'und hier kopieren
If strDateiName = ActiveWorkbook.Name Then GoTo nächste:
FileCopy .FoundFiles(i), unterordner & "\" & strDateiName
nächste:
Next i
Next unterordner
End With
Set fso = Nothing
Set f1 = Nothing
End Sub


Gruss
Tino

Anzeige
Das war stark!
04.10.2007 20:34:38
Fritz_W
Hallo Tino,
mein Kompliment, funktioniert das jetzt prima!
Tolle Hilfe, vielen Dank!
Schönen Abend noch
Gruß
Fritz

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA: Alle Dateien aus Unterordnern in einen Ordner kopieren


Schritt-für-Schritt-Anleitung

  1. Öffne die Excel-Datei, die als Hauptdatei dient und in deren Ordner die Dateien kopiert werden sollen.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.

  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub neu()
       Dim i As Variant, unterordner As Variant
       Dim fso, f1 As Object
       Dim strDateiName As String, verz As String
       verz = ActiveWorkbook.Path & "\" 'Kopieren von
       Set fso = CreateObject("Scripting.filesystemobject")
       Set f1 = fso.GetFolder(verz)
       ChDir verz
       With Application.FileSearch
           .NewSearch
           .LookIn = verz
           .SearchSubFolders = False
           .Filename = "*.*" 'Datei Typ
           .Execute
           For Each unterordner In f1.subfolders
               For i = 1 To .FoundFiles.Count
                   ' hier Dateinamen extrahieren
                   strDateiName = Right(.FoundFiles(i), Len(.FoundFiles(i)) - InStrRev(.FoundFiles(i), "\"))
                   ' und hier kopieren
                   If strDateiName = ActiveWorkbook.Name Then GoTo nächste:
                   FileCopy .FoundFiles(i), unterordner & "\" & strDateiName
                   nächste:
               Next i
           Next unterordner
       End With
       Set fso = Nothing
       Set f1 = Nothing
    End Sub
  5. Ändere den Pfad, falls nötig, indem du die Zeile verz = ActiveWorkbook.Path & "\" anpasst.

  6. Führe das Makro aus: Gehe zurück zu Excel, drücke ALT + F8, wähle neu und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Fehler: "Das Makro läuft endlos"
    Lösung: Überprüfe, ob der Pfad korrekt eingegeben wurde (verz = "c:\dein\pfad\"). Stelle sicher, dass die Excel-Datei im gleichen Ordner wie die Unterordner gespeichert ist.

  • Fehler: "Keine Dateien werden kopiert"
    Lösung: Achte darauf, dass die Suchoption SearchSubFolders auf False gesetzt ist, und dass der Dateityp in der Zeile .Filename = "*.*" korrekt angegeben ist.


Alternative Methoden

Wenn du keine VBA-Lösung nutzen möchtest, kannst du auch manuell alle Dateien aus einem Ordner kopieren:

  1. Öffne den Hauptordner im Explorer.
  2. Drücke Strg + A, um alle Dateien auszuwählen.
  3. Ziehe die Dateien in die gewünschten Unterordner.

Praktische Beispiele

  • Beispiel: Kopieren aller Dateien aus einem Ordner
    Wenn du alle Dateien aus einem Ordner in die Unterordner kopieren möchtest, kannst du die oben genannten Schritte mit dem entsprechenden VBA-Code nutzen, um sicherzustellen, dass die Dateien nicht doppelt kopiert werden.

Tipps für Profis

  • Verwende F8, um den Code Schritt für Schritt auszuführen: So kannst du genau verfolgen, was in jedem Schritt passiert und eventuelle Fehler leichter identifizieren.
  • Erstelle Backups: Bevor du den Code ausführst, mache immer eine Sicherungskopie deiner Dateien, um Datenverlust zu vermeiden.
  • Teste den Code zuerst in einer Testumgebung, bevor du ihn in einer produktiven Umgebung anwendest.

FAQ: Häufige Fragen

1. Wie kann ich alle Dateinamen aus einem Ordner kopieren?
Du kannst den VBA-Code anpassen, um nur Dateinamen zu extrahieren, anstatt sie zu kopieren.

2. Funktioniert das auch in Excel 2016?
Ja, der Code ist mit Excel 2016 und späteren Versionen kompatibel. Achte darauf, dass die entsprechenden VBA-Einstellungen aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige