Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dateien verschieben in Schleife

Dateien verschieben in Schleife
13.03.2020 13:26:59
FrankH
Moin, ich habe folgendes Thema.
ich habe einen Ordner mit Dateien, per Button werden die Dateiname in Sheet(Dateien) in Spalte 1 eingelesen.
Die Liste wird nun manuell mit weiteren Infos aufgefüllt, ein neuer Name in Spalte 3 generiert und per Button werden die Dateien umbenannt .
Nach erfolgreicher Umbenennung erscheint eine Messagebox und fragt, ob die Dateien nun verschoben werden sollen.
Bis hierher funktioniert es.
Die Dateien sollen nun entsprechend der Liste (Zeilen i) nacheinander in bestimmte Ordner verschoben werden, die Ordnernamen befinden sich in Spalte 10 und Spalte 11.
Problem ist nun, dass nur eine Datei verschoben wird, danach kommt die Meldung "Laufzeitfehler '53' Datei nicht gefunden" und der Debugger zeigt auf "FSO.MoveFile Quelle, Ziel".
Was kann es sein, warum wird nicht die nächste folgende Datei verschoben?
'Dateien verschieben
If MsgBox("Umbenennen beendet, Dateien jetzt verschieben?", vbYesNo + vbQuestion) = vbYes Then
'Da Spaltenueberschrift beginne in Zeile 2
i = 2
Quelle = Range("Ordner") & "\" & sh.Cells(i, 3)
If Dir(Quelle) = "" Then
MsgBox "Keine Dateien vorhanden!"
Else
Set sh = Sheets("Dateien")
Ziel = "C:\Testordner2\" & sh.Cells(i, 10) & "\" & sh.Cells(i, 11) & "\"
Set FSO = CreateObject("Scripting.FileSystemObject")
Do
FSO.MoveFile Quelle, Ziel
'Set FSO = Nothing
i = i + 1
Loop Until Range("Ordner") = ""
MsgBox "Dateien wurden verschoben"
End If
End If
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Dateien verschieben in Schleife
13.03.2020 14:02:55
EtoPHG
Hallo Frank
Du setzt die Variable Quelle & Ziel genau 1mal
Der Do für die Iteration ist viel zu weit unten im Code, er gehört vor das Setzen der Quelle
Gruess Hansueli
AW: Dateien verschieben in Schleife
13.03.2020 14:03:58
UweD
Hallo
ungetestet.....
Ziel (I) muss doch hochzählen. Deshalb innerhalb die Do /Loop Schleife.
    'Dateien verschieben 
    If MsgBox("Umbenennen beendet, Dateien jetzt verschieben?", vbYesNo + vbQuestion) = vbYes Then
        'Da Spaltenueberschrift beginne in Zeile 2 
        i = 2
        Quelle = Range("Ordner") & "\" & sh.Cells(i, 3)
        If Dir(Quelle) = "" Then
            MsgBox "Keine Dateien vorhanden!"
        Else
            Set sh = Sheets("Dateien")
            Set FSO = CreateObject("Scripting.FileSystemObject")
            Do
                Ziel = "C:\Testordner2\" & sh.Cells(i, 10) & "\" & sh.Cells(i, 11) & "\"
                FSO.MoveFile Quelle, Ziel
                'Set FSO = Nothing 
                i = i + 1
            Loop Until Range("Ordner") = ""
            MsgBox "Dateien wurden verschoben"
        End If
        
    End If

LG UweD
Anzeige
AW: Dateien verschieben in Schleife
13.03.2020 14:09:52
UweD
Gilt ja auch für Quelle...
Musst du komplett umbauen
AW: Dateien verschieben in Schleife
13.03.2020 14:15:28
FrankH
Vielen Dank für den Hinweis, ich versuche mal es hinzubekommen.
AW: Dateien verschieben in Schleife
13.03.2020 16:51:19
FrankH
Vielen Dank, hat funktioniert!
Anzeige
Danke für die Rückmeldung. (owT)
16.03.2020 09:49:24
UweD
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Dateien in Excel mit VBA verschieben


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Excel-Datei: Stelle sicher, dass die Datei, die Du verschieben möchtest, in einem bestimmten Ordner liegt. Der Pfad zu diesem Ordner sollte in der Zelle "Ordner" in Deinem Excel-Sheet stehen.

  2. Umbenennen der Dateien: Verwende einen Button, um die Dateinamen in das Sheet zu importieren. Die neuen Namen sollten in Spalte 3 stehen.

  3. VBA-Code zum Verschieben der Dateien: Kopiere den folgenden VBA-Code in ein Modul:

    Sub DateienVerschieben()
       Dim i As Long
       Dim Quelle As String
       Dim Ziel As String
       Dim FSO As Object
       Set FSO = CreateObject("Scripting.FileSystemObject")
    
       If MsgBox("Umbenennen beendet, Dateien jetzt verschieben?", vbYesNo + vbQuestion) = vbYes Then
           i = 2
           Do
               Quelle = Range("Ordner") & "\" & Sheets("Dateien").Cells(i, 3)
               If Dir(Quelle) = "" Then
                   MsgBox "Keine Dateien vorhanden!"
                   Exit Sub
               End If
               Ziel = "C:\Testordner2\" & Sheets("Dateien").Cells(i, 10) & "\" & Sheets("Dateien").Cells(i, 11) & "\"
               FSO.MoveFile Quelle, Ziel
               i = i + 1
           Loop Until Sheets("Dateien").Cells(i, 3) = ""
           MsgBox "Dateien wurden verschoben"
       End If
    End Sub
  4. Ausführen des Codes: Klicke auf den Button, um die Dateien entsprechend der Liste zu verschieben.


Häufige Fehler und Lösungen

  • Fehler 53: Datei nicht gefunden: Dieser Fehler tritt auf, wenn die Quelldatei nicht vorhanden ist. Überprüfe den Pfad und die Dateinamen in Spalte 3.
  • Loop-Ende nicht erreicht: Stelle sicher, dass die Schleife korrekt formuliert ist. Der Code sollte so strukturiert sein, dass die Bedingung für das Ende der Schleife richtig gesetzt ist.

Alternative Methoden

Falls Du nicht mit VBA arbeiten möchtest, kannst Du die Dateien auch manuell verschieben oder ein Makro in Excel aufzeichnen, um den Prozess zu automatisieren. Eine andere Möglichkeit ist die Verwendung von Power Query, um Daten zu importieren und zu verschieben.


Praktische Beispiele

Hier ein Beispiel für den Code, um mehrere Dateien in einer Schleife zu verschieben:

Dim i As Long
For i = 2 To 10 ' Beispiel für 10 Zeilen
    ' Hier den Code zum Verschieben der Datei einfügen
Next i

Du kannst die Schleife anpassen, um so viele Dateien zu verschieben, wie Du benötigst.


Tipps für Profis

  • FSO-Objekt: Verwende das FSO-Objekt, um sicherzustellen, dass Dateien korrekt verschoben werden. FSO.MoveFile ist der Befehl, den Du dafür benötigst.
  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Fehler während des Verschiebeprozesses abzufangen. Nutze On Error Resume Next, um Fehler zu ignorieren, und informiere den Benutzer über spezifische Probleme.

FAQ: Häufige Fragen

1. Wie kann ich den Pfad dynamisch anpassen?
Du kannst den Pfad für die Quelldatei in einer Zelle speichern und im VBA-Code auf diese Zelle verweisen.

2. Was mache ich, wenn der Zielordner nicht existiert?
Überprüfe, ob der Zielordner existiert, bevor Du versuchst, die Datei dorthin zu verschieben. Du kannst diesen mit FSO.CreateFolder erstellen, falls er nicht vorhanden ist.

3. Wie viele Dateien kann ich gleichzeitig verschieben?
Das hängt von der Schleifenstruktur ab. In der Regel kannst Du so viele Dateien wie nötig verschieben, solange Du den Code entsprechend anpasst.

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