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

Dateien aus Verzeichnis ausschneiden mit Makro

Forumthread: Dateien aus Verzeichnis ausschneiden mit Makro

Dateien aus Verzeichnis ausschneiden mit Makro
01.01.2004 13:59:08
Heinz München
Hi,

Ich habe ein Makro das 20 Textdateien in einem Verzeichnis ..\Reports verarbeitet.
Die eigentliche Verarbeitung klappt wunderbar.

Nachdem alles vorbei (ich meine nicht das alte Jahr) sondern die Verarbeitung, würde ich jetzt gerne ganz zuletzt diese 20 Stück ausschneiden in ein anderes Verzeichnis ...\xy, so dass also \Reports wieder frei ist.

Wer kann mir denn ein Makro zeigen, wie das geht ?

Dabei bin ich nicht auf VBA angewiesen, sondern ich habe in der Zwischenzeit auch die Sripting Runtime Bibliothek eingebunden, damit ich Windows und Windows-Explorer nutzen kann.
Aber wie gesagt aller Anfang ist schwer, und so habe ich meine Anfangsschwierigkeiten.

Also vielleicht sagt mir jemand eine Anleitung entweder VBA allein, oder mit VBA incl. Scripting

Mit freundlichen Grüßen
Heinz
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Dateien aus Verzeichnis ausschneiden mit Makro
01.01.2004 14:11:30
Ramses
Hallo

das geht so

Option Explicit


Sub Move_File()
Dim myFSO As Object
Dim Quelle As String, Ziel As String
Set myFSO = CreateObject("Scripting.FileSystemObject")
Quelle = "C:\test.xls"
Ziel = "D:\test.xls"
myFSO.MoveFile Quelle, Ziel
End Sub


Das ganze kannst du noch in Schleife packen und dein Report ist wieder frei

Gruss Rainer
Anzeige
AW: Dateien aus Verzeichnis ausschneiden mit Makro
01.01.2004 14:36:24
Nepumuk
Hallo Heinz,
Meine Variante geht davon aus, dass sich nur diese Textdateien in dem Ordner befinden. Der Verweis auf "Mikrosoft Scriptig Runtime" muss gesetzt sein.

Option Explicit
Public Sub verschieben()
Dim myFileSystemObject As New FileSystemObject
Dim myFiles As Files, myFile As File, myFolder As Folder
Set myFolder = myFileSystemObject.GetFolder("C:\Reports")
Set myFiles = myFolder.Files
For Each myFile In myFiles
myFile.Move ("C:\XY\" & myFile.Name)
Next
Set myFileSystemObject = Nothing
Set myFolder = Nothing
Set myFiles = Nothing
Set myFile = Nothing
End Sub



Code eingefügt mit: Excel Code Jeanie

Gruß
Nepumuk
Anzeige
AW: Dateien aus Verzeichnis ausschneiden mit Makro
02.01.2004 23:14:58
Heinz München
Hi,

das lobe ich mir, zu einer Lösung gleich noch eine weitere hinzugefügt. So macht es Spaß.
Danke für Eure Mühe

mfg
Heinz
@Ramses Nochmal mein Thema
03.01.2004 14:45:10
Heinz München
@Ramses

Ich habe versucht Deine Lösung umzusetzen,
da sie mir einfacher schien als die Zweite,
obwohl ich die Zweite klasse finde (wenn auch kaum untersucht und verstanden)
Ich habe 20 verschiedene Namen die sich immer wieder ändern.

Wie soll das mit einer z.B. normalen For Next-Schleife gehen ? (eher For Each)

Für den Fall einer einzelnen Datei hast Du recht.

Im alten Dos habe ich gefunden:
D: weg dateiname D: weg dateiname ziel

D: weg dateiname Dateien die verschoben werden sollen

Ziel "Als Ziel können Sie ein Laufwerk und wahlweise ein
Verzeichnis angeben. Soll nur eine Datei verschoben werden,
können Sie hier einen neuen Dateinamen angeben."
(In Deinem Fall "Test.xls" tut es auch der alte Dateinamen)

Deshalb scheitert auch mein Versuch das so zu machen:

Quelle =" ... Erstertest\Reports\System Report*.txt"
Ziel =" ... Erstertest\Archiv_Systemreports\System Report*.txt"
myFSO.MoveFile Quelle, Ziel

Lässt man dagegen im Ziel System Report*.txt weg, dann klappt es. Das deckt sich mit dem alten DOS.

mfg
Heinz

PS: Warum ist es in diesem Forum nicht möglich Antworten von alten Beiträgen ganz oben erscheinen zu lassen?
Oder habe ich eine Bildungslücke ?
Anzeige
Anzeige

Infobox / Tutorial

Dateien aus Verzeichnis ausschneiden mit Makro


Schritt-für-Schritt-Anleitung

Um Dateien aus einem Verzeichnis zu verschieben, kannst du ein einfaches Makro in Excel verwenden. Hier ist ein Schritt-für-Schritt-Guide:

  1. Öffne Excel und gehe zu den Entwicklertools (falls sie nicht aktiviert sind, aktiviere sie unter Datei > Optionen > Menüband anpassen).

  2. Klicke auf „Visual Basic“, um den VBA-Editor zu öffnen.

  3. Erstelle ein neues Modul, indem du mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ klickst und „Einfügen“ > „Modul“ wählst.

  4. Füge den folgenden VBA-Code ein:

    Option Explicit
    
    Sub Move_File()
        Dim myFSO As Object
        Dim Quelle As String, Ziel As String
    
        Set myFSO = CreateObject("Scripting.FileSystemObject")
        Quelle = "C:\Reports\*.txt"  ' Quelle: alle Textdateien im Reports-Ordner
        Ziel = "C:\XY\"              ' Ziel: Ordner, in den die Dateien verschoben werden
    
        Dim myFile As Object
        For Each myFile In myFSO.GetFolder("C:\Reports").Files
            If myFile.Name Like "*.txt" Then
                myFile.Move Ziel & myFile.Name
            End If
        Next myFile
    
        Set myFSO = Nothing
    End Sub
  5. Passe die Pfade für Quelle und Ziel an deine Bedürfnisse an.

  6. Schließe den VBA-Editor und führe das Makro aus.


Häufige Fehler und Lösungen

  • Fehler: „Laufwerk nicht gefunden“

    • Stelle sicher, dass die angegebenen Verzeichnisse tatsächlich existieren und die Pfade korrekt sind.
  • Fehler: „Zugriff verweigert“

    • Überprüfe die Berechtigungen für die Ordner, um sicherzustellen, dass du die erforderlichen Rechte zum Verschieben der Dateien hast.
  • Fehler: „Datei nicht gefunden“

    • Wenn du einen Platzhalter wie *.txt verwendest, stelle sicher, dass im Quellverzeichnis tatsächlich Dateien mit dieser Endung vorhanden sind.

Alternative Methoden

Wenn du nicht nur VBA verwenden möchtest, kannst du auch die Windows-Scripting-Host-Methoden nutzen. Hier ist ein Beispielcode:

Sub MoveFilesUsingScripting()
    Dim objFSO As Object
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Dim sourceFolder As String
    Dim targetFolder As String

    sourceFolder = "C:\Reports\"
    targetFolder = "C:\XY\"

    If objFSO.FolderExists(sourceFolder) Then
        Dim file As Object
        For Each file In objFSO.GetFolder(sourceFolder).Files
            If Right(file.Name, 4) = ".txt" Then
                objFSO.MoveFile file.Path, targetFolder & file.Name
            End If
        Next file
    End If
End Sub

Praktische Beispiele

  1. Einfaches Verschieben: Du möchtest alle .txt-Dateien von C:\Reports nach C:\XY verschieben. Verwende den oben genannten Code und passe die Pfade an.

  2. Erweiterte Auswahl: Wenn du nur Dateien verschieben möchtest, die ein bestimmtes Datum haben oder einen bestimmten Namen enthalten, kannst du die If-Bedingungen im For-Loop anpassen.


Tipps für Profis

  • Fehlerbehandlung: Implementiere On Error Resume Next und On Error GoTo 0 für eine bessere Fehlerbehandlung in deinem Makro.

  • Performance: Bei großen Mengen von Dateien kann das Batch-Verfahren die Geschwindigkeit erhöhen. Überlege, ob du die Dateien in Gruppen verarbeiten kannst.

  • Automatisierung: Du kannst das Makro automatisch beim Öffnen der Datei oder zu bestimmten Zeiten ausführen lassen, um den Prozess zu automatisieren.


FAQ: Häufige Fragen

1. Kann ich auch andere Dateitypen verschieben? Ja, passe die If-Bedingung im Code an, um andere Dateitypen auszuwählen, z.B. If Right(file.Name, 4) = ".jpg" Then.

2. Wie kann ich das Makro speichern? Speichere die Excel-Datei als „Excel-Makro-fähige Arbeitsmappe“ (*.xlsm), um das Makro zu behalten.

3. Funktioniert das auch in Excel Online? Nein, VBA und Scripting sind nur in der Desktop-Version von Excel verfügbar.

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