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

Forumthread: CopyFile

CopyFile
07.01.2005 15:39:23
Rolf
Hallo Forum,
wenn ich mit CopyFile mehrere Dateien
mit Platzhalterzeichen kopiere
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile "C:\quellverzeichnis\auswertung*.xls", backupfolder, True
funktionierts; wenn ich dagegen eine einzelne Datei
kopieren will
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile "C:\quellverzeichnis\auswertung_12_04.xls", backupfolder, True
tritt Laufzeitfehler 70, "Zugriff verweigert", auf.
Weiss jemand Rat?
Herzliche Grüße
Rolf
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: CopyFile
Ulf
Hinweise
Platzhalterzeichen dürfen nur in der letzten Pfadkomponente des Arguments Quelle verwendet werden. Dies ist z. B. erlaubt:
FileSystemObject.CopyFile "c:\Eigene Dateien\Briefe\*.doc", "c:\temp\"
Dies hingegen nicht:
FileSystemObject.CopyFile "c:\Eigene Dateien\*\R1?97.xls", "c:\temp"
Wenn Quelle Platzhalterzeichen enthält oder Ziel mit einem Pfadtrennzeichen endet (\), wird angenommen, dass Ziel ein vorhandener Ordner ist, in den die übereinstimmenden Dateien kopiert werden. Andernfalls ist das Ziel der Name einer zu erstellenden Datei. Folgende drei Situationen können eintreten, wenn eine einzelne Datei kopiert wird:
Falls Ziel nicht vorhanden ist, wird Quelle kopiert. Dies ist der Normalfall.
Falls Ziel eine vorhandene Datei ist, tritt ein Fehler auf, wenn Überschreiben auf False eingestellt ist. Andernfalls wird versucht, Quelle über die vorhandene Datei zu kopieren.
Falls Ziel ein Verzeichnis ist, tritt ein Fehler auf.
Es kommt des Weiteren zu einem Fehler, wenn eine Quelle mit Platzhalterzeichen mit keiner der Dateien übereinstimmt. Die CopyFile-Methode wird beim ersten auftretenden Fehler abgebrochen. Vor dem Fehler durchgeführte Änderungen werden nicht rückgängig gemacht.
Anzeige
AW: CopyFile
07.01.2005 18:57:03
Rolf
Hallo Ulf,
vielen Dank. Es lag am fehlenden backslash
in "backupfolder".
Herzl.Grüße + schönes WE
Rolf
;
Anzeige

Infobox / Tutorial

Effektive Nutzung von fso.copyfile in Excel VBA


Schritt-für-Schritt-Anleitung

Um die fso.copyfile Methode in Excel VBA effektiv zu nutzen, folge diesen Schritten:

  1. Aktiviere die Microsoft Scripting Runtime (optional, aber empfohlen für IntelliSense):

    • Gehe zu den VBA-Tools.
    • Wähle Verweise aus.
    • Aktiviere Microsoft Scripting Runtime.
  2. Erstelle ein neues VBA-Modul:

    • Öffne Excel, drücke ALT + F11 um den VBA-Editor zu öffnen.
    • Rechtsklicke im Projektfenster auf Einfügen > Modul.
  3. Schreibe den Code:

    Sub CopyFileExample()
       Dim fso As Object
       Dim sourceFile As String
       Dim backupFolder As String
    
       Set fso = CreateObject("Scripting.FileSystemObject")
       sourceFile = "C:\quellverzeichnis\auswertung_12_04.xls"
       backupFolder = "C:\backupfolder\"
    
       ' Kopiere die Datei
       fso.CopyFile sourceFile, backupFolder, True
    End Sub
  4. Führe das Makro aus:

    • Gehe zurück zu Excel und drücke ALT + F8.
    • Wähle das CopyFileExample Makro und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Laufzeitfehler 70 – Zugriff verweigert:

    • Ursache: Möglicherweise fehlt der Backslash \ am Ende des Zielverzeichnisses.
    • Lösung: Stelle sicher, dass backupFolder korrekt definiert ist, z.B. backupFolder = "C:\backupfolder\".
  • Verwendung von Platzhaltern:

    • Platzhalter dürfen nur in der letzten Komponente des Quellpfads verwendet werden. Beispiel:
      fso.CopyFile "C:\quellverzeichnis\*.xls", backupFolder
    • Stelle sicher, dass das Zielverzeichnis korrekt angegeben ist, um Fehler zu vermeiden.

Alternative Methoden

Wenn du die fso.copyfile Methode nicht verwenden möchtest, kannst du auch die FileCopy-Methode in VBA nutzen:

Sub FileCopyExample()
    FileCopy "C:\quellverzeichnis\auswertung_12_04.xls", "C:\backupfolder\auswertung_12_04.xls"
End Sub

Beachte, dass FileCopy keine Platzhalter unterstützt und die Ziel-Datei direkt angegeben werden muss.


Praktische Beispiele

  1. Kopieren mehrerer Dateien:

    fso.CopyFile "C:\quellverzeichnis\*.xls", "C:\backupfolder\"
  2. Kopieren mit Fehlerbehandlung:

    On Error Resume Next
    fso.CopyFile "C:\quellverzeichnis\auswertung_12_04.xls", backupFolder, True
    If Err.Number <> 0 Then
       MsgBox "Fehler: " & Err.Description
    End If
    On Error GoTo 0

Tipps für Profis

  • Verwende die fso-Objektvariable effizient, um mehrere Dateien oder Verzeichnisse zu verwalten.
  • Nutze die FileSystemObject-Methoden wie MoveFile oder DeleteFile, um deine Dateioperationen zu erweitern.
  • Dokumentiere deinen Code gut, um die Wartbarkeit zu erhöhen, besonders wenn du mit fso.copyfile arbeitest.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen FileCopy und fso.copyfile?
FileCopy ist eine einfache Methode, die keine Platzhalter unterstützt. fso.copyfile bietet mehr Flexibilität, einschließlich der Verwendung von Platzhaltern.

2. Kann ich fso.copyfile auch in Excel für Mac verwenden?
Nein, die FileSystemObject-Methoden sind nicht für Excel unter Mac verfügbar. Du musst alternative Methoden nutzen.

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