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

Forumthread: Mit Move eine Datei verschieben

Mit Move eine Datei verschieben
18.08.2008 18:31:37
Reinhard
Hallo Wissende,
in einem festgelegten Verzeichnis sollen alle xls-Dateien überprüft werden (alle gleich aufgebaut) ob sie Kriterien entsprechen, wenn nicht sollen sie in ein Unterverzeichnis dieses Verzeichnisses verschoben werden.
So wie es sich mir darstellt, funktioniert die Erstellung des Unterverzeichnisse "Schlecht" gut, auch die Überprüfung der Kriterien scheint gut zu klappen.
Mein Problem ist diese Zeile
.FoundFiles(F).Move Pfad & "\Schlecht\" & Dateiname
die mag der Debugger nicht :-( Fehler 424, Objekt erforderich
.FoundFiles(F) hat zu diesem Zeitpunkt den Inhalt: H:\kwMessdaten\abc..xls
Pfad hat zu diesem Zeitpunkt den Inhalt: H:\kwMessdaten
Dateiname hat zu diesem Zeitpunkt den Inhalt: abc.xls
Irgendwie benutze ich "Move" falsch, hab auch schon einiges ausprobiert, naja ergebnislos. Und ja, die Vba-Hilfe zu Move habe ich mir angeschaut, vielleicht habe ich da an Irgendwas wichtigem vorbeigeschielt *gg*
Hier der Code:

Option Explicit
Sub SpreuUndWeizen()
Dim fs, F, Pfad, Dateiname
Pfad = "H:\kwMessDaten"
If Dir(Pfad & "\Schlecht/nul") = "" Then MkDir Pfad & "\Schlecht"
Set fs = Application.FileSearch
With fs
.LookIn = Pfad
.SearchSubFolders = False
.Filename = "*.xls"
If .Execute() > 0 Then
For F = 1 To .FoundFiles.Count
Workbooks.Open .FoundFiles(F)
Dateiname = ActiveWorkbook.Name
If Gut(ActiveWorkbook.Worksheets(1)) = False Then
ActiveWorkbook.Close savechanges:=False
MsgBox .FoundFiles(F)
.FoundFiles(F).Move Pfad & "\Schlecht\" & Dateiname
Else
ActiveWorkbook.Close savechanges:=False
End If
Next F
End If
End With
End Sub
Function Gut(Blatt As Worksheet) As Boolean
Dim Zähler As Byte, Zei As Long
For Zei = 7 To 35 Step 2
If Blatt.Cells(Zei, 2) >= Blatt.Cells(3, 2) Then
If Blatt.Cells(Zei, 2) 


Danke ^ Gruß
Reinhard

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit Move eine Datei verschieben
18.08.2008 18:43:12
Tino
Hallo,
das verschieben gehört zum FileSystemObject
Hier mal ein Beispiel

Dim fso As Object, F1 As Object
quelle = "c:\test\a\a.txt"
ziel = "c:\test\b\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set F1 = fso.GetFile(quelle)
F1.Move (ziel)


Gruß Tino

Anzeige
AW: Mit Move eine Datei verschieben
18.08.2008 18:52:00
Reinhard
Hallo Tino,
danke dir, ich gehe sehr davon aus, das kriege ich eingebaut.
Schade, ich dachte Vba könnte das in einem Einzeiler so wie bei Dos, bei Chdir usw. klappts ja auch, und ich hätte nur einen "bedienungsfehler" beim Move gemacht.
Gruß
Reinhard

geht auch einfacher. ;-)
18.08.2008 19:13:00
Tino
Hallo,
geht natürlich auch einfacher, bin nur auf deinen Code eingegangen.
Dabei kannst du auch die Datei gleich umbenennen wen du möchtest bei Ziel einfach einen anderen Namen vergeben.

Dim quelle As String
Dim Ziel As String
quelle = "J:\Test\Datei.xls"
Ziel = "J:\Test\Test\Datei.xls"
Name quelle As Ziel


Gruß Tino

Anzeige
AW: geht auch einfacher. ;-)
19.08.2008 07:59:00
Reinhard
Moin Tino,
Name so benutzt kannte ich nicht, dankeschön.
Gruß
Reinhard
;

Forumthreads zu verwandten Themen

Anzeige
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

Um eine Datei in Excel mit VBA zu verschieben, kannst du das FileSystemObject verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xls)" und wähle "Einfügen" > "Modul".
  3. Füge den folgenden Code ein:

    Sub DateiVerschieben()
       Dim fso As Object
       Dim quelle As String
       Dim ziel As String
    
       quelle = "C:\DeinPfad\deineDatei.xls"
       ziel = "C:\DeinPfad\NeuerOrdner\deineDatei.xls"
    
       Set fso = CreateObject("Scripting.FileSystemObject")
       fso.MoveFile quelle, ziel
    End Sub
  4. Passe die Pfade an: Ersetze C:\DeinPfad\deineDatei.xls mit dem Pfad deiner Datei und C:\DeinPfad\NeuerOrdner\deineDatei.xls mit dem Zielpfad.
  5. Führe das Makro aus: Klicke auf Run oder drücke F5.

Häufige Fehler und Lösungen

  • Fehler 424: Objekt erforderlich: Dieser Fehler tritt auf, wenn ein Objekt nicht korrekt definiert ist. Stelle sicher, dass du das FileSystemObject korrekt initialisiert hast.

  • Datei nicht gefunden: Überprüfe den angegebenen Pfad. Ein Tippfehler im Pfad kann dazu führen, dass die Datei nicht gefunden wird.

  • Zielverzeichnis existiert nicht: Stelle sicher, dass das Zielverzeichnis existiert. Wenn nicht, kannst du es mit MkDir erstellen.


Alternative Methoden

Eine alternative Methode zum Verschieben von Dateien ist die Verwendung der Name-Anweisung in VBA. Diese Methode kann auch zum Umbenennen genutzt werden.

Sub DateiUmbenennenUndVerschieben()
    Dim quelle As String
    Dim ziel As String

    quelle = "C:\DeinPfad\deineDatei.xls"
    ziel = "C:\DeinPfad\NeuerOrdner\neueDatei.xls"

    Name quelle As ziel
End Sub

Diese Methode ist einfach und effektiv, wenn du sowohl die Datei verschieben als auch umbenennen möchtest.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du in Excel VBA Dateien verschieben kannst:

  1. Einfaches Verschieben einer Datei:

    Sub EinfachesVerschieben()
       Dim fso As Object
       Set fso = CreateObject("Scripting.FileSystemObject")
       fso.MoveFile "C:\Test\alteDatei.txt", "C:\Test\NeuerOrdner\neueDatei.txt"
    End Sub
  2. Verschieben von mehreren Dateien:

    Sub MehrereDateienVerschieben()
       Dim fso As Object
       Dim quelleOrdner As String
       Dim zielOrdner As String
       Dim datei As Object
       Set fso = CreateObject("Scripting.FileSystemObject")
    
       quelleOrdner = "C:\Test\"
       zielOrdner = "C:\Test\NeuerOrdner\"
    
       For Each datei In fso.GetFolder(quelleOrdner).Files
           fso.MoveFile datei.Path, zielOrdner & datei.Name
       Next datei
    End Sub

Tipps für Profis

  • Nutze das FileSystemObject, um mehr Kontrolle über das Dateisystem zu erhalten.
  • Überprüfe, ob die Datei bereits im Zielverzeichnis vorhanden ist, um Fehler zu vermeiden.
  • Verwende Fehlerbehandlung, um Probleme beim Verschieben der Datei zu erkennen und zu beheben:

    On Error Resume Next
    fso.MoveFile quelle, ziel
    If Err.Number <> 0 Then
       MsgBox "Fehler beim Verschieben: " & Err.Description
       Err.Clear
    End If
    On Error GoTo 0

FAQ: Häufige Fragen

1. Wie verschiebe ich eine Excel-Datei in einen Unterordner?
Verwende das FileSystemObject und stelle sicher, dass der Unterordner existiert, bevor du die Datei verschiebst.

2. Kann ich mit VBA eine Datei umbenennen, während ich sie verschiebe?
Ja, du kannst die Name-Anweisung verwenden, um die Datei während des Verschiebens umzubenennen.

3. Funktioniert das auch in Access?
Ja, du kannst ähnliche Methoden in Access VBA verwenden, um Dateien zu verschieben.

4. Was mache ich, wenn ich mehrere Dateien verschieben möchte?
Nutze eine Schleife, um über alle Dateien in einem Verzeichnis zu iterieren und sie mit fso.MoveFile zu verschieben.

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