Supportnet / Forum / Tabellenkalkulation
Ordner per Makro kopieren
Frage
Hallöle,
leider komme ich mit der Exce-Hilfe nicht weiter.
Wie kann ich in einem Excel Makro alle Dateien eines Ordners kopieren?
Vielen Dank im Voraus!
Gruß
Fubajunkie
Antwort 1 von coros
Hallo Fubajunkie,
mit nachfolgendem Makro wird Dir der in dem Makro angegebene Ordner kopiert. Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche.
Das Makro kopiert den Ordner "C:\Daten" in das Verzeichnis "D:\".
Du musst in dem Makro in der Zeile
noch das zu kopierende Verzeichnis und das Zielverzeichnis anpassen.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
mit nachfolgendem Makro wird Dir der in dem Makro angegebene Ordner kopiert. Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche.
Option Explicit
Sub Ordner_kopieren()
Dim OB As Object
Set OB = CreateObject("Scripting.FileSystemObject")
OB.CopyFolder "C:\Daten", "D:\"
Set OB = Nothing
End SubDas Makro kopiert den Ordner "C:\Daten" in das Verzeichnis "D:\".
Du musst in dem Makro in der Zeile
OB.CopyFolder "C:\Daten", "D:\"noch das zu kopierende Verzeichnis und das Zielverzeichnis anpassen.
Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von fubajunkie
Hallo Oliver,
leider klappt da bei mir etwas nicht.
Bei der Zeile
Wo kann denn da das Problem liegen?
Gruß
Holger
leider klappt da bei mir etwas nicht.
Bei der Zeile
Set OB = Create... kommt der Laufzeitfehler 429: Objekterstellung durch ActiveX-Komponente nich möglich.Wo kann denn da das Problem liegen?
Gruß
Holger
Antwort 3 von coros
HAllo Holger,
welche Excelversion verwendest Du und welche Verweise sind im VBA- Projekt (zu finden im VBA- Editor in der Menüleiste unter Extras => Verweise...) gestezt.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
welche Excelversion verwendest Du und welche Verweise sind im VBA- Projekt (zu finden im VBA- Editor in der Menüleiste unter Extras => Verweise...) gestezt.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von fubajunkie
Hallo Oliver,
das ist Excel 2002 mit SP2
und die Verweise sind:
Viele Grüße
Holger
das ist Excel 2002 mit SP2
und die Verweise sind:
- Visual Basic for Applications
Microsoft Excel 10.0 Object Library
Microsoft Office 10.0 Object Library
Microsoft Forms 2.0 Object Library
OLE Automation.
Viele Grüße
Holger
Antwort 5 von coros
Hallo Holger,
eigentlich sollte das mit den eingetsellten Verweisen funktionieren. Hast Du die Möglichkeit, Deine Datei auf einem anderen Rechner, auf dem Excel installiert ist, zu testen?
Eventuell hilft Dir ja auch Microsoft Support Beitrag zu diesem Fehler weiter.
Mir jedenfalls ist es schleierhaft, dass es bei Dir nicht funktioniert. Ich habe das Makro mal auf verschiedenen Rechnern laufen lassen. Ergebnis: Überall hat es funktioniert.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
eigentlich sollte das mit den eingetsellten Verweisen funktionieren. Hast Du die Möglichkeit, Deine Datei auf einem anderen Rechner, auf dem Excel installiert ist, zu testen?
Eventuell hilft Dir ja auch Microsoft Support Beitrag zu diesem Fehler weiter.
Mir jedenfalls ist es schleierhaft, dass es bei Dir nicht funktioniert. Ich habe das Makro mal auf verschiedenen Rechnern laufen lassen. Ergebnis: Überall hat es funktioniert.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 6 von nok106
Hallo Oliver,
Dein erstelltes Makro ist super.
Könnte man es noch um eine Abfrage erweitern,
- Dateien im Zielverzeichnis überschreiben Ja oder Nein -
Wäre das machbar ?
Gruß Odje
Dein erstelltes Makro ist super.
Könnte man es noch um eine Abfrage erweitern,
- Dateien im Zielverzeichnis überschreiben Ja oder Nein -
Wäre das machbar ?
Gruß Odje
Antwort 7 von coros
Hallo nok106,
dann würde das Makro folgendermaßen aussehen:
Hier wird geprüft, ob im Zielverzeichnis das zu kopierende Verzeichnis bereits exisitiert. Wenn ja, erscheint eine Abfrage, ob überschrieben werden soll oder nicht. Je nach Auswahl wird das Verezeichnis ersetzt oder nicht.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
dann würde das Makro folgendermaßen aussehen:
Option Explicit
Sub Ordner_kopieren()
Dim OB As Object, Quelle_Pfad As String, Quelle_Verz As String
Dim Ziel As String, Abfr As Variant
Quelle_Pfad = "C:\"
Quelle_Verz = "Daten"
Ziel = "D:\"
If Dir(Ziel & Quelle_Verz, vbDirectory) <> "" Then
Abfr = MsgBox("Soll das vorhandcene Verzeichnis überschrieben werden?", vbYesNo, "Abfrage...")
Rem: Wenn Nein-Button betätigt
If Abfr = 7 Then Exit Sub
End If
Set OB = CreateObject("Scripting.FileSystemObject")
OB.CopyFolder Quelle_Pfad & Quelle_Verz, Ziel
Set OB = Nothing
End SubHier wird geprüft, ob im Zielverzeichnis das zu kopierende Verzeichnis bereits exisitiert. Wenn ja, erscheint eine Abfrage, ob überschrieben werden soll oder nicht. Je nach Auswahl wird das Verezeichnis ersetzt oder nicht.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 8 von nok106
Hallo Oliver,
Danke für deine Bemühung.
Funktioniert bestens.
Gruß Odje
Danke für deine Bemühung.
Funktioniert bestens.
Gruß Odje
Antwort 9 von fubajunkie
Hallo Oliver,
ich habe jetzt einiges versucht und Dein Code funktioniert. Leider aber nicht, wenn ich ihn in mein Makro einbaue. Also liegt es wohl an mir.
Hier mal der komplette Code:
Das Makro überprüft eine Datei, ob sie sich schon aktualisiert hat. Wenn ja wird der komplette Ordner kopiert, wenn nein erscheint die Messagebox. Das Aktualisieren passiert immer zwischen 1 und 2 Uhr Nachts, jeden Tag.
Ich hatte schon das Problem mit dem Datumsabgleich.
Vielleicht fällt Dir ja noch etwas ein, warum diese beknackte Fehlermeldung immer erscheint.
Gruß
Holger
ich habe jetzt einiges versucht und Dein Code funktioniert. Leider aber nicht, wenn ich ihn in mein Makro einbaue. Also liegt es wohl an mir.
Hier mal der komplette Code:
Sub Ordner_kopieren()
Dim OB As Object
Datum = FileDateTime("D:\TestQuelle\DE.TXT")
Datum = DatePart("d", Datum)
vdatum = DatePart("d", Date)
If Datum = vdatum Then
Set OB = CreateObject("Scripting.FileSystemObjekt")
OB.CopyFolder "D:\TestQuelle", "D:\TestZiel"
Set OB = Nothing
Else
MsgBox ("Die Daten haben sich noch nicht aktualisiert")
End If
End Sub
Das Makro überprüft eine Datei, ob sie sich schon aktualisiert hat. Wenn ja wird der komplette Ordner kopiert, wenn nein erscheint die Messagebox. Das Aktualisieren passiert immer zwischen 1 und 2 Uhr Nachts, jeden Tag.
Ich hatte schon das Problem mit dem Datumsabgleich.
FileDateTime liefert ein Datum incl. Zeitangabe, Date ohne die Zeitangabe, also habe ich nur den aktuellen Tag und den Erstellungstag verglichen. Wahrscheinlich extrem umständlich...Vielleicht fällt Dir ja noch etwas ein, warum diese beknackte Fehlermeldung immer erscheint.
Gruß
Holger
Antwort 10 von coros
Hallo Holger,
der Fehler liegt in der Zeile
Du hast dort "Scripting.FileSystemObjekt" mit k anstelle c geschrieben. Die Zeile lautet richtig
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
der Fehler liegt in der Zeile
Set OB = CreateObject("Scripting.FileSystemObjekt")Du hast dort "Scripting.FileSystemObjekt" mit k anstelle c geschrieben. Die Zeile lautet richtig
Set OB = CreateObject("Scripting.FileSystemObject")MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 11 von fubajunkie
...oh wie peinlich. Jetzt klappt es.
Vielen Dank für Deine ausdauernde Hilfe.
Gruß
Holger
Vielen Dank für Deine ausdauernde Hilfe.
Gruß
Holger

