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

Forumthread: Zellen auslesen, in Ordnern suchen und kopieren

Zellen auslesen, in Ordnern suchen und kopieren
01.08.2014 12:53:59
Thomas
Hallo liebe Community,
folgendes Szenario möchte ich mit Hilfe von VBA Excel verwirklichen:
Ich habe ein Excel File mit einem Formular in das Seriennummern eingetragen werden. Das Formular hat 8 Zeilen und 8 Spalten. In jede Zelle wird eine 4-stellige Seriennummer eingetragen. Die Seriennummer wird manuell eingetragen durch Sichtprüfung. Bisher wurde immer manuell der dazu passende Prüfbericht in den Ordnern gesucht. Ich möchte nun das sobald ich alle SN eingetragen habe, die Excel Programmierung mir in den Ordnern das jeweilige txt. Dokument raussucht für jede einzelne Zelle und in einen seperaten Ordner kopiert. Der Name des Orderns kann der Zelleninhalt einer Zelle zu Beginn sein ("Lieferung 1" etwa).
Wäre super wenn mir jemand helfen könnte!
Besten Dank!

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zellen auslesen, in Ordnern suchen und kopieren
01.08.2014 14:32:26
Tino
Hallo,
mal eine Version.
Sub Kopieren_()
Dim rngRange As Range
Dim sDir$

'Bereich 
Set rngRange = Tabelle2.Range("A2:H9")
'Pfad Quelle 
Const sPathQuelle$ = "G:\1 Forum\"
'Pfad Ziel 
Const sPathZiel$ = "G:\1 Forum\Neuer Ordner (4)\"

For Each rngRange In rngRange.Cells
    If rngRange.Value <> "" Then
        sDir = Dir$(sPathQuelle & rngRange.Value & "*.txt", vbNormal)
        If sDir <> "" Then
            FileCopy sPathQuelle & sDir, sPathZiel & sDir
        End If
    End If
Next rngRange

MsgBox "Fertig"
End Sub
Gruß Tino

Anzeige
AW: Zellen auslesen, in Ordnern suchen und kopieren
01.08.2014 14:52:11
Thomas
Vielen Dank! Also funktionieren tut es! Jedoch muss ich den Ordner in der er die Dateien speichert seblst anlegen. Geht das auch automatisiert das ich oben ein Feld habe und der Zelleninhalt wird mein Ordner.

AW: Zellen auslesen, in Ordnern suchen und kopieren
02.08.2014 09:51:35
Tino
Hallo,
müsste so funktionieren!
Private Declare Function apiCreateFullPath _
Lib "imagehlp.dll" Alias "MakeSureDirectoryPathExists" (ByVal lpPath As String) As Long

Sub Kopieren_()
Dim rngRange As Range
Dim sDir$
Dim lngCreatePath&

'Bereich 
Set rngRange = Tabelle2.Range("A2:H9")
'Pfad Quelle 
Const sPathQuelle$ = "G:\1 Forum\"
'Pfad Ziel 
Const sPathZiel$ = "G:\1 Forum\Neuer Ordner (5)\"
'Ordner anlegen wenn nicht vorhanden 
lngCreatePath = apiCreateFullPath(Left$(sPathZiel, InStrRev(sPathZiel, "\")))

If lngCreatePath = 1 Then
    For Each rngRange In rngRange.Cells
        If rngRange.Value <> "" Then
            sDir = Dir$(sPathQuelle & rngRange.Value & "*.txt", vbNormal)
            If sDir <> "" Then
                FileCopy sPathQuelle & sDir, sPathZiel & sDir
            End If
        End If
    Next rngRange
    MsgBox "Fertig"
Else
    MsgBox "Ordner konnte nicht angelegt werden!", vbCritical
End If
End Sub
Gruß Tino

Anzeige
AW: Zellen auslesen, in Ordnern suchen und kopieren
07.08.2014 09:06:03
Thomas
Hallo Tino!
Vielen Dank erstmal für deine Hilfe.
Funktioniert einwandfrei jedoch hätt ich noch ein paar Dinge:
Ist es möglich den Pfad (Quelle und Ziel) manuell auswählen zu lassen, damit der Nutzer den Quellordner auswählen kann und sagen kann unter welchem Ordnernamen er wo speichern soll.
Vielen Dank

Anzeige
AW: Zellen auslesen, in Ordnern suchen und kopieren
07.08.2014 11:02:32
Thomas
Hallo!
Mir ist eine neue Idee gekommen:
Für die Quelldatei wäre es sinnvoll das der Benutzer nicht den Ordner selbst suchen müsste in dem er die .txt Dateien finden kann sondern wenn das Makro es automatisch machen könnte. In der Excel Tabelle gibt es zwei Nummer: "123456" und "A12". Diese Nummern setzen sich zusammen zum Ordner "123456_A12". Jetzt wäre es klasse wenn das Makro den Quellpfad bekommt und in der Liste der vielen Ordner anhand der zwei Nummern den richtigne findet.
Dannach soll wie gehabt nach der Eingabe der Seriennnummern er die Zellen abgleichen und in dem Ordner nach der .txt Datei suchen, kopieren in einen Ordner mit dem Namen der in einer Zelle zu Beginn steht und diesen speichern und am Ende eine Msg Box aufpoppen.
Die Msg Box soll foglenden Inhalt haben: 15 von 15 kopiert oder noch besser wenn er sagen könnte welche Dateien nicht gefunden wurden, wenn es dazu kommt.
Vielen vielen Dank

Anzeige
AW: Zellen auslesen, in Ordnern suchen und kopieren
07.08.2014 11:02:49
Thomas
Hallo!
Mir ist eine neue Idee gekommen:
Für die Quelldatei wäre es sinnvoll das der Benutzer nicht den Ordner selbst suchen müsste in dem er die .txt Dateien finden kann sondern wenn das Makro es automatisch machen könnte. In der Excel Tabelle gibt es zwei Nummer: "123456" und "A12". Diese Nummern setzen sich zusammen zum Ordner "123456_A12". Jetzt wäre es klasse wenn das Makro den Quellpfad bekommt und in der Liste der vielen Ordner anhand der zwei Nummern den richtigne findet.
Dannach soll wie gehabt nach der Eingabe der Seriennnummern er die Zellen abgleichen und in dem Ordner nach der .txt Datei suchen, kopieren in einen Ordner mit dem Namen der in einer Zelle zu Beginn steht und diesen speichern und am Ende eine Msg Box aufpoppen.
Die Msg Box soll foglenden Inhalt haben: 15 von 15 kopiert oder noch besser wenn er sagen könnte welche Dateien nicht gefunden wurden, wenn es dazu kommt.
Vielen vielen Dank
Anzeige
;

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

Zellen auslesen, in Ordnern suchen und kopieren


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und erstelle ein neues VBA-Modul:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Klicke mit der rechten Maustaste auf "VBAProject (DeinExcelDokument)", wähle Einfügen und dann Modul.
  2. Füge den folgenden Code ein:

    Sub Kopieren_()
       Dim rngRange As Range
       Dim sDir As String
       Dim lngCreatePath As Long
    
       ' Bereich
       Set rngRange = Tabelle2.Range("A2:H9")
       ' Pfade
       Const sPathQuelle As String = "G:\1 Forum\"
       Const sPathZiel As String = "G:\1 Forum\Neuer Ordner\"
    
       ' Ordner anlegen wenn nicht vorhanden
       lngCreatePath = apiCreateFullPath(Left$(sPathZiel, InStrRev(sPathZiel, "\")))
    
       If lngCreatePath = 1 Then
           For Each rngCell In rngRange.Cells
               If rngCell.Value <> "" Then
                   sDir = Dir$(sPathQuelle & rngCell.Value & "*.txt", vbNormal)
                   If sDir <> "" Then
                       FileCopy sPathQuelle & sDir, sPathZiel & sDir
                   End If
               End If
           Next rngCell
           MsgBox "Fertig"
       Else
           MsgBox "Ordner konnte nicht angelegt werden!", vbCritical
       End If
    End Sub
  3. Ersetze die Pfade nach Bedarf: Achte darauf, dass der Quell- und Zielpfad korrekt angegeben sind.

  4. Führe das Makro aus: Du kannst das Makro über F5 im VBA-Editor ausführen oder es direkt aus Excel aufrufen.


Häufige Fehler und Lösungen

  • Ordner kann nicht angelegt werden:

    • Überprüfe, ob der Zielpfad korrekt ist und ob Du über die notwendigen Berechtigungen verfügst.
  • Dateien werden nicht gefunden:

    • Stelle sicher, dass die Seriennummern in der richtigen Form eingegeben sind und dass die .txt-Dateien im Quellordner vorhanden sind.

Alternative Methoden

Falls Du keine VBA-Programmierung verwenden möchtest, kannst Du auch die Excel-Funktion SVERWEIS nutzen, um die Seriennummern zu überprüfen. Diese Methode erfordert jedoch manuelle Intervention, um die Dateien in den entsprechenden Ordner zu kopieren.


Praktische Beispiele

Angenommen, Du hast in den Zellen A2 bis H9 Seriennummern wie folgt eingetragen:

1234
5678
9101

Der VBA-Code wird die entsprechenden .txt-Dateien aus dem Quellordner suchen und sie in den Zielordner kopieren. Der Zielordner könnte dabei dynamisch durch die Inhalte der Zellen benannt werden, indem Du den Code anpasst.


Tipps für Profis

  • Automatisches Erstellen des Zielordners: Du kannst den Code erweitern, um den Zielordner basierend auf dem Zellinhalt dynamisch zu benennen.
  • Fehlerprotokollierung: Füge eine Protokollierungsfunktion hinzu, um nicht gefundene Dateien zu speichern und später anzuzeigen.

FAQ: Häufige Fragen

1. Wie kann ich den Quell- und Zielordner manuell auswählen?
Du kannst den FileDialog-Befehl in VBA nutzen, um dem Benutzer die Auswahl des Ordners zu ermöglichen.

2. Was mache ich, wenn ich mehrere Dateien kopieren möchte?
Der gezeigte Code kopiert alle Dateien basierend auf den Seriennummern. Du kannst die Logik anpassen, um auch mehrere Dateitypen zu unterstützen.

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