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

Dateien kopieren mit Nachfrage vor überschreiben

Forumthread: Dateien kopieren mit Nachfrage vor überschreiben

Dateien kopieren mit Nachfrage vor überschreiben
19.12.2019 11:44:59
Mike
Hallo,
ich will alle Dateien (*.sp) von
Quellverzeichnis nach Zielverzeichnis kopieren.
Falls im Zielverzeichnis eine Datei schon vorhanden ist will ich nachfragen,
ob überschrieben werden soll.
xcopy wäre eine Lösung, ist aber nicht sehr Benutzerfreundlich
Gibt es mit FSO.copyfile eine Lösung? Oder sonst?
Grüße
Mike
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: andere Lösung? z.B. TotalCommander ...
19.12.2019 12:08:43
neopa
Hallo Mike,
... dazu sieh mal hier: https://www.ghisler.com/
Gruß Werner
.. , - ...
AW: andere Lösung? z.B. TotalCommander ...
19.12.2019 15:04:05
Mike
Hallo,
meine Krücke....
strFile(i) = Dir(QPfadName)
Do
i = i + 1
ReDim Preserve strFile(i)
strFile(i) = Dir
Loop While Len(strFile(i))
For i = 1 To UBound(strFile) - 1
mbox = vbYes
If PathExists(ZPfad & strFile(i)) Then
mbox = MsgBox("Soll Datei überschrieben werden ?", vbYesNo)
End If
'kopieren
If mbox = vbYes Then
myFSO.copyfile QPfadName & strFile(i), ZPfad, True
End If
Next i
Anzeige
Dateien kopieren mit Nachfrage vor überschreiben
19.12.2019 16:15:58
Anton
Hallo Mike,
so?:
Code in Zwischenablage:

Sub b()
  Dim fso As Object, oDatei As Object  
  Dim sQuelle As String, sZiel As String  
  sQuelle = "E:\temp\" 'anpassen
  sZiel = "E:\tmp\" 'anpassen
  Set fso = CreateObject("Scripting.FileSystemObject")  
  For Each oDatei In fso.getfolder(sQuelle).Files  
    If fso.fileexists(sZiel & oDatei.Name) Then  
      If MsgBox("Datei " & sZiel & oDatei.Name & _
        " existiert bereits.Überschreiben?", vbQuestion + vbYesNo, "Abfrage") = vbYes Then
        fso.copyfile oDatei, sZiel, True
      End If  
    Else
      fso.copyfile oDatei, sZiel, True
    End If  
  Next
  Set fso = Nothing  
End Sub  

mfg Anton
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Dateien kopieren mit Nachfrage vor Überschreiben


Schritt-für-Schritt-Anleitung

Um Dateien von einem Quellverzeichnis in ein Zielverzeichnis zu kopieren und dabei eine Nachfrage zu integrieren, ob eine bereits existierende Datei überschrieben werden soll, kannst du den folgenden VBA-Code verwenden. Dieser Code nutzt das FileSystemObject (FSO) und bietet eine einfache Möglichkeit, Dateien zu kopieren.

  1. Öffne Excel und gehe zu Entwicklertools.
  2. Klicke auf Visual Basic, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).
  4. Kopiere den folgenden Code in das Modul:
Sub DateienKopieren()
    Dim fso As Object
    Dim oDatei As Object
    Dim sQuelle As String, sZiel As String

    sQuelle = "E:\temp\"  ' Quellverzeichnis anpassen
    sZiel = "E:\tmp\"     ' Zielverzeichnis anpassen

    Set fso = CreateObject("Scripting.FileSystemObject")

    For Each oDatei In fso.getfolder(sQuelle).Files
        If fso.fileexists(sZiel & oDatei.Name) Then
            If MsgBox("Datei " & sZiel & oDatei.Name & " existiert bereits. Überschreiben?", vbQuestion + vbYesNo, "Abfrage") = vbYes Then
                fso.copyfile oDatei, sZiel, True
            End If
        Else
            fso.copyfile oDatei, sZiel, True
        End If
    Next
    Set fso = Nothing
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Fehler: "Sub oder Function nicht definiert"

    • Stelle sicher, dass du das Makro korrekt eingegeben hast und dass der Code in einem Modul eingefügt wurde.
  • Problem: Keine Nachfrage beim Überschreiben

    • Überprüfe, ob der Code in der If-Bedingung richtig implementiert ist. Die MsgBox sollte bei existierenden Dateien aufgerufen werden.

Alternative Methoden

Wenn du eine Benutzeroberfläche bevorzugst, kannst du auch Tools wie den Total Commander verwenden, um Dateien zu kopieren und dabei Abfragen zum Überschreiben zu erhalten. Eine andere Möglichkeit ist die Verwendung von xcopy über die Eingabeaufforderung:

xcopy E:\temp\* E:\tmp\ /Y /I

Mit der Option /Y wird die Nachfrage beim Überschreiben unterdrückt. Wenn du die Abfrage möchtest, lasse die Option weg.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie das Makro funktioniert:

  • Du hast mehrere .sp-Dateien im Verzeichnis E:\temp\ und möchtest sie nach E:\tmp\ kopieren.
  • Falls eine Datei bereits im Zielverzeichnis existiert, fragt das Makro, ob du die Datei überschreiben möchtest.

Wenn du das Makro ausführst, erhältst du eine klare Abfrage für jede existierende Datei.


Tipps für Profis

  • Verwende fso.copyfile anstelle von xcopy, wenn du mehr Kontrolle über den Kopiervorgang und spezifische Abfragen möchtest.
  • Automatisiere den Prozess weiter, indem du die Quell- und Zielverzeichnisse dynamisch festlegst, beispielsweise durch Eingabeaufforderungen für den Benutzer.
  • Stelle sicher, dass deine Excel-Version VBA unterstützt, um die oben genannten Methoden erfolgreich anzuwenden.

FAQ: Häufige Fragen

1. Kann ich den Code auch für andere Dateitypen verwenden? Ja, der Code funktioniert für alle Dateitypen, solange du die Dateiendungen im Quellverzeichnis angibst.

2. Was mache ich, wenn ich keine Nachfrage beim Überschreiben möchte? Entferne die If-Bedingung, die die MsgBox aufruft, und verwende einfach fso.copyfile oDatei, sZiel, True direkt, um die Datei ohne Nachfrage zu überschreiben.

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