Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Inhalt von Ordner in anderen Ordner kopieren

VBA - Inhalt von Ordner in anderen Ordner kopieren
14.12.2016 21:55:18
Ordner
Hallo Experten,
Ich habe knapp 20 Dateien in 12 Ordnern die nicht nur identisch benannt sind, sondern die ich auch aus übergeordneten Verzeichnis/Datei weitgehend identisch bearbeite (Kopieren/Einfügen/Löschen von Werten etc.).
Um die Bearbeitung (der Dateien in 12 Ordnern) nicht ein Dutzend mal mit Schaltflächen/Code etc. wiederholen zu müssen, dachte ich, dass ich per Button alle Dateien aus einem der 12 Ordner in einen anderen Ordner (Name: „temp“) kopiere, dann meine Bearbeitung in der ausgehenden Mappe erledige, um danach per Button wieder 20 Dateien aus dem nächsten Ordner in „temp“ zu kopieren,- bzw die vorhandenen ohne Nachfrage, ersetze und meine Bearbeitung fortsetze.
Also, ich bräuchte ein VBA, welches mir per Button alle Dateien die im Verzeichnis (Pfad ist in „A1“ angegeben) sind, in den Ordner „C:\Users\Besitzer\Desktop\ELO\temp“ kopiert und evt. vorhandenen Dateien zuvor löscht,- ohne Nachfrage.
Kann mir jemand von den VBA-Experten da weiterhelfen?
Gruß
Fred
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Das lässt sich relativ...
15.12.2016 06:16:19
Case
Hallo Fred, :-)
... einfach mit "Shell" lösen: ;-)
Option Explicit
Sub Main()
Shell ("xcopy " & ThisWorkbook.Worksheets("Tabelle1").Range("A1").Value & _
Application.PathSeparator & "*.xls*" & " " & _
Environ("UserProfile") & "\Desktop\" & "ELO\temp\" & "/Y")
End Sub
Dabei steht bei mir in Tabelle1, A1 "C:\Temp" - NICHT "C:\Temp\" - dann müsstest Du den Code etwas anpassen. ;-)
Mit den guten alten DOS-Befehlen lässt sich in VBA einiges machen: ;-)
XCOPY - SHELL und ein paar Dinge mehr...
Falls das Verzeichnis auf dem Desktop nicht vorhanden ist, kannst Du es recht einfach mit der API-Funktion "MakeSureDirectoryPathExists" anlegen. Diese hat den Vorteil, dass sie - falls der Ordner schon vorhanden ist - das einfach ignoriert, sprich - keinen Fehler auslöst und auch Ordner mit mehreren Tiefen anlegen kann (im Gegensatz zu MkDir). ;-)
Option Explicit
Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
ByVal DirPath As String) As Long
Sub Main_1()
MakeSureDirectoryPathExists Environ("UserProfile") & "\Desktop\" & "ELO\temp\"
End Sub
Servus
Case

Anzeige
VBA - Inhalt von Ordner in anderen Ordner kopieren
15.12.2016 15:16:04
Ordner
Hallo Case,
so schließt sich der Kreis :-)
Ich war erst letzte Nacht über Google auf deinem Blog und hatte mir alternativ für meine Anfrage deinen Code vom August 2012 http://vbanet.blogspot.de/2012/08/frage-ich-mochte-einen-bekannten-ordner.html
kopiert.
Deine Lösung hier im Forum ist natürlich genau das, was ich wollte und funzt einwandfrei.
Case, danke für deine Hilfe!
mfG
Fred
Anzeige
Gerne! Danke für die Rückmeldung, owT
16.12.2016 00:46:10
Case
:-)
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA: Inhalt von Ordner in anderen Ordner kopieren


Schritt-für-Schritt-Anleitung

Um mit VBA Dateien von einem Ordner in einen anderen zu kopieren, befolge diese Schritte:

  1. Öffne Excel und erstelle ein neues Arbeitsblatt.

  2. Gib den Pfad des Quellordners in die Zelle A1 ein (z.B. C:\Temp).

  3. Füge den folgenden VBA-Code in ein Modul ein:

    Option Explicit
    
    Sub DateienKopieren()
       Shell ("xcopy " & ThisWorkbook.Worksheets("Tabelle1").Range("A1").Value & _
       Application.PathSeparator & "*.xls*" & " " & _
       Environ("UserProfile") & "\Desktop\ELO\temp\" & " /Y")
    End Sub
  4. Führe das Makro aus, indem du im Excel-Entwicklermodus auf "Makros" klickst und "DateienKopieren" wählst.

  5. Überprüfe den Zielordner (C:\Users\Besitzer\Desktop\ELO\temp) auf die kopierten Dateien.

Dieser Code nutzt den xcopy Befehl, um alle Excel-Dateien aus dem angegebenen Ordner zu kopieren und vorhandene Dateien zu überschreiben.


Häufige Fehler und Lösungen

  • Fehler: "Verzeichnis nicht gefunden"

    • Überprüfe den Pfad in Zelle A1 und stelle sicher, dass der Ordner existiert.
  • Fehler: Keine Berechtigung zum Kopieren

    • Stelle sicher, dass Excel mit den notwendigen Berechtigungen ausgeführt wird.
  • Fehler: Dateien werden nicht kopiert

    • Vergewissere dich, dass die Dateiendungen korrekt angegeben sind (z.B. *.xls* für Excel-Dateien).

Alternative Methoden

Falls du die Dateien ohne VBA kopieren möchtest, kannst du auch die Windows-Eingabeaufforderung nutzen:

  1. Öffne die Eingabeaufforderung.
  2. Gib den folgenden Befehl ein:

    xcopy "C:\Temp\*.xls*" "C:\Users\Besitzer\Desktop\ELO\temp\" /Y

Dies kopiert alle Excel-Dateien in den Zielordner, ähnlich wie der VBA-Code.


Praktische Beispiele

  • Beispiel 1: Eine Datei in mehrere Ordner kopieren

    • Um eine bestimmte Datei in mehrere Ordner zu kopieren, könntest du eine Schleife im VBA verwenden:
    Sub DateiInMehrereOrdnerKopieren()
       Dim ZielOrdner As Variant
       ZielOrdner = Array("C:\Ordner1", "C:\Ordner2", "C:\Ordner3")
    
       For Each ordner In ZielOrdner
           FileCopy "C:\Temp\deineDatei.xlsx", ordner & "\deineDatei.xlsx"
       Next ordner
    End Sub
  • Beispiel 2: Ordner ohne Inhalt kopieren

    • Wenn du nur die Struktur der Ordner ohne Inhalte kopieren möchtest, könntest du eine Funktion verwenden, die die Ordnerstruktur rekursiv anlegt.

Tipps für Profis

  • Verwende die MakeSureDirectoryPathExists API-Funktion, um sicherzustellen, dass der Zielordner existiert, bevor du Dateien kopierst.

    Private Declare Function MakeSureDirectoryPathExists Lib "imagehlp.dll" ( _
    ByVal DirPath As String) As Long
    
    Sub ZielOrdnerErstellen()
       MakeSureDirectoryPathExists Environ("UserProfile") & "\Desktop\ELO\temp\"
    End Sub
  • Optimiere deine Makros durch das Hinzufügen von Fehlerbehandlungsroutinen, um unerwartete Probleme eleganter zu lösen.


FAQ: Häufige Fragen

1. Kann ich Dateien auch aus mehreren Quellordnern gleichzeitig kopieren?
Ja, du kannst eine Schleife verwenden, um über eine Liste von Quellordnern zu iterieren und die Dateien in den Zielordner zu kopieren.

2. Wie kann ich sicherstellen, dass ich keine Dateien überschreibe?
Du kannst den /Y Schalter im xcopy Befehl weglassen, um nachzufragen, bevor Dateien überschrieben werden. Alternativ kannst du VBA verwenden, um eine Abfrage zu implementieren, bevor eine Datei kopiert wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige