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

Forumthread: Datein im Ordner überschreiben ohne Nachfrage!

Datein im Ordner überschreiben ohne Nachfrage!
22.06.2005 10:33:55
Anja
Hallo...
Ich bin wieder gezwungen nach eure Hilfe zu fragen...
Ich habe eine Funktion, die Dateien von einem Ordner ins andere verschiebt.
Manch mal kann es aber passieren, dass die gleiche Dateien mit gleichen namen verschiebt werden. Dann erscheint die Meldung, ob es überschrieben werden soll.
Mein ziel ist es, diese Meldung zu vermeiden... Entweder sofort überschreiben ohene nachzufragen, oder doppelte Dateien im Ordner vermeiden, oder wenn das gleiche Datei übertagen sollte sie sofort löschen...
Wie kann ich es mit VBA realisieren...
Das habe ich bis jetzt (PS: hat mir ein guter Mensch aus diesem Forum geholfen ;) ):

Sub Ordner_uebertragen()
Dim FSO As Object
Dim FileList() As String
Dim x As Integer
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim Dateien, Datei, Ordner
strPath0 = Me!PName
If strPath0 = "" Then Exit Sub
strPath_quelle = (strPath0 + "\to update\")
strPath_Ziel = (strPath0 + "\was updated\")
Set Ordner = FSO.GetFolder(strPath_quelle)
Set Dateien = Ordner.Files
For Each Datei In Dateien
FSO.MoveFile strPath_quelle & Datei.Name, strPath_Ziel & Datei.Name
Next
End Sub

Nun muss die code noch entsprechend ergänzt werden...
Ich freue mich über jeden Tipp :)
Danke und
viele Grüße
Anja
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datein im Ordner überschreiben ohne Nachfrage!
22.06.2005 10:42:57
UweD
Hallo Anja
so dürfte es gehen:
...
Application.DisplayAlerts = False
For Each Datei In Dateien
FSO.MoveFile strPath_quelle & Datei.Name, strPath_Ziel & Datei.Name
Next
Application.DisplayAlerts = True
...
Gruß UweD
(Rückmeldung wäre toll)
AW: Datein im Ordner überschreiben ohne Nachfrage!
22.06.2005 10:44:06
Uduuh
Hallo,
Versuchs mal so:
For Each Datei In Dateien
FSO.MoveFile strPath_quelle & Datei.Name, strPath_Ziel & Datei.Name, True
Next
Gruß aus'm Pott
Udo
Anzeige
AW: Datein im Ordner überschreiben ohne Nachfrage!
22.06.2005 10:49:23
Alexander
Laut VBA-Hilfe hat die MoveFile-Methode nur 2 Parameter (From und To).
AW: Datein im Ordner überschreiben ohne Nachfrage!
22.06.2005 11:01:50
Uduuh
Hallo,
dann eben so:
For Each Datei In Dateien
FSO.CopyFile strPath_quelle & Datei.Name, strPath_Ziel & Datei.Name, True
FSO.DeleteFile strPath_quelle & Datei.Name, True
Next
Gruß
Udo
Anzeige
AW: Datein im Ordner überschreiben ohne Nachfrage!
22.06.2005 11:44:31
Anja
Hallo alle zusammen...
Das ist super toll, wie gut ihr helft.
Danke an alle!!!! :)))
Udo das hat funktioniert... :)
vielen Dank
und viele Grüße
Anja
AW: Datein im Ordner überschreiben ohne Nachfrage!
22.06.2005 10:44:34
Alexander
Hallo Anja.
Versuch's mal mit :
FSO.CopyFile strPath_quelle & Datei.Name, strPath_Ziel & Datei.Name, True
FSO.DeleteFile strPath_quelle & Datei.Name
statt
FSO.MoveFile strPath_quelle & Datei.Name, strPath_Ziel & Datei.Name
Das "true" in der Copy-Methode sollte das Überschreiben erzwingen.
Gruß, Alex.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dateien im Ordner überschreiben ohne Nachfrage


Schritt-für-Schritt-Anleitung

Um Dateien in einem Ordner mit VBA zu überschreiben, ohne eine Nachfrage zu erhalten, kannst du den folgenden Code verwenden. Dieser nutzt das FileSystemObject, um die Dateien zu kopieren und anschließend die Originaldateien zu löschen. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge einen neuen Modul hinzu (Rechtsklick auf "VBAProject" → Einfügen → Modul).

  3. Kopiere den folgenden Code in das Modul:

    Sub Ordner_uebertragen()
       Dim FSO As Object
       Dim Dateien As Object
       Dim Datei As Object
       Dim strPath0 As String
       Dim strPath_quelle As String
       Dim strPath_Ziel As String
    
       Set FSO = CreateObject("Scripting.FileSystemObject")
       strPath0 = Me!PName
       If strPath0 = "" Then Exit Sub
       strPath_quelle = (strPath0 + "\to update\")
       strPath_Ziel = (strPath0 + "\was updated\")
    
       Set Dateien = FSO.GetFolder(strPath_quelle).Files
    
       For Each Datei In Dateien
           ' Dateien kopieren und die Originaldateien löschen
           FSO.CopyFile strPath_quelle & Datei.Name, strPath_Ziel & Datei.Name, True
           FSO.DeleteFile strPath_quelle & Datei.Name
       Next
    End Sub
  4. Stelle sicher, dass die Pfade zu den Ordnern korrekt sind, und führe das Makro aus.


Häufige Fehler und Lösungen

  • Fehler: „Datei nicht gefunden“

    • Überprüfe, ob die Pfade korrekt sind und ob die Quelldateien tatsächlich vorhanden sind.
  • Fehler: „Zugriff verweigert“

    • Stelle sicher, dass du die nötigen Berechtigungen hast, um auf die Dateien zuzugreifen und sie zu löschen.
  • Meldung zum Überschreiben

    • Um die Meldung zu vermeiden, setze den dritten Parameter der CopyFile-Methode auf True, wie im obigen Beispiel gezeigt.

Alternative Methoden

Falls du eine andere Methode bevorzugst, kannst du anstelle von FSO.MoveFile die VBA FileCopy-Methode verwenden, um Dateien zu kopieren und anschließend die Originaldateien zu löschen. Hier ein Beispiel:

FileCopy strPath_quelle & Datei.Name, strPath_Ziel & Datei.Name
Kill strPath_quelle & Datei.Name

Diese Methode funktioniert ähnlich, erfordert jedoch mehr manuelle Kontrolle über die Fehlerbehandlung.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die oben genannten Methoden im Kontext verwenden kannst:

  1. Beispiel: Dateien von einem Backup-Ordner verschieben

    Sub Backup_Dateien_uebertragen()
       Dim FSO As Object
       Set FSO = CreateObject("Scripting.FileSystemObject")
       Dim strBackupPfad As String
       strBackupPfad = "C:\Backup\"
    
       ' Hier kannst du den Code aus der Schritt-für-Schritt-Anleitung verwenden
    End Sub
  2. Beispiel: Übertragen von Bilddateien

    Sub Bilder_uebertragen()
       Dim FSO As Object
       Set FSO = CreateObject("Scripting.FileSystemObject")
       Dim strBildPfad As String
       strBildPfad = "C:\Bilder\"
    
       ' Implementiere die Logik aus der Anleitung
    End Sub

Tipps für Profis

  • Nutze Application.DisplayAlerts: Setze Application.DisplayAlerts = False, bevor du mit dem Verschieben oder Kopieren beginnst. Vergiss nicht, es danach wieder auf True zu setzen, um andere Warnungen nicht zu unterdrücken.

  • Fehlerbehandlung einfügen: Implementiere eine Fehlerbehandlung, um unerwartete Probleme abzufangen und den Prozess robuster zu gestalten.

  • Testumgebung verwenden: Teste deine Makros in einer sicheren Umgebung, bevor du sie in der Produktionsumgebung ausführst, um Datenverlust zu vermeiden.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass keine doppelten Dateien im Zielordner sind?
Du kannst vor dem Kopieren überprüfen, ob die Datei bereits existiert, und dann entscheiden, ob du sie überschreiben oder ignorieren möchtest.

2. Funktioniert dieser Code auch in Excel 2010?
Ja, der bereitgestellte VBA-Code sollte in Excel 2010 und späteren Versionen funktionieren, solange die entsprechenden Berechtigungen vorhanden sind.

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