Supportnet Computer
Planet of Tech

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.

Option Explicit

Sub Ordner_kopieren()
Dim OB As Object
Set OB = CreateObject("Scripting.FileSystemObject")
OB.CopyFolder "C:\Daten", "D:\"
Set OB = Nothing
End Sub


Das 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
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.

Antwort 4 von fubajunkie

Hallo Oliver,

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.

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

Antwort 7 von coros

Hallo nok106,

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 Sub


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.

Antwort 8 von nok106

Hallo Oliver,

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:

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

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: