Clever-Excel-Forum

Normale Version: VBA- Aus mehrere CSV Datein Suchwert finden um dann Ganze Zeile in Excel auszugeben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3 4
Ich hatte schon eine Excel-Datei erwartet, in der das Ergebnis entsprechend in den jeweiligen Zellen eingetragen ist. So kann ich jetzt wieder raten, ob nur eine ID ausgegeben werden soll oder beide. Denn wenn der Suchbegriff "SchülerID" ist, dann würden ja beide Einträge gefunden. Oder sollte nach der Nummer gesucht werden und diese ist dann nur einmal vorhanden?
Hallo, ist eine csv wegen des Datenschutzes schwierig...? Wenn nicht poste doch bitte zwei bis sieben csv-Dateien...
Hallo

 ich kann keine CSV Datei hochladen.
 ES sollte nach der Nummer gesucht werden und diese ist dann nur einmal vorhanden! =)
(30.07.2018, 15:42)lulu183 schrieb: [ -> ]Hallo

 ich kann keine CSV Datei hochladen...

Hallo, dann bin ich zumindest raus... Viel Erfolg.
Da ja schon ein ordentliches Grundgerüst vorhanden war, will ich mal nicht so sein. Code auf Basis von Vermutungen angepasst und (hoffentlich) ordentlich eingerückt:
Code:
Sub Pro1_Test()
Dim sPath As String
Dim sSearchPath As String
Dim FileName As String
Dim InputData As String
Dim vTmp As Variant
Dim vTmpp As Variant
Dim vnt As Boolean
Dim such As String
Dim i As Long

'###############################################################################
' Folgende Anweisung löscht den Inhalt der aktiven Tabelle
ActiveSheet.Cells.ClearContents

'Frage nach den Suchbegriff
such = InputBox("Geben Sie den Suchbegriff ein:", "Suche...")
such = Replace(such, " ", "") ' Leerzeichen entfernen
If such = "" Then Exit Sub ' Bei Abbrechen Prog. sofort beenden

' Suche in alle .CSV Dateien
sPath = "N:\Archiv\Archiv12\"
sSearchPath = sPath & "*.csv"
FileName = Dir(sSearchPath)

If FileName <> "" Then
    Do While FileName <> ""
        Open sPath & FileName For Input As #1
        Do While Not EOF(1)
            Line Input #1, InputData
            ' Zeile mit Suchwort gefunden
            If InStr(1, InputData, such) > 0 Then
                vnt = True
                vTmp = Split(InputData, "$")
                Range("B7") = FileName
                Range("A12:C12") = Split(vTmp(0), ";")
                For i = 1 To UBound(vTmp)
                    If vTmp(i) <> "" Then
                        vTmpp = Split(vTmp(i), ";")
                        Range(Cells(i + 12, 1), Cells(i + 12, 1 + UBound(vTmpp))) = vTmpp
                    End If
                Next
            End If
        Loop
        Close #1
        If vnt Then Exit Do 'Datensatz gefunden, weitersuchen nicht mehr notwendig!?
        FileName = Dir ' nächste Datei durchsuchen
    Loop
End If
If Not vnt Then MsgBox "Suchbegriff nicht gefunden!"
End Sub
Hallo Michael,

danke für den Code, allerdings löst es noch nicht mein Problem.
Das exportiert mir leider immer noch die gesamte CSV, während ich nur die einzelne Zeile mit Suchwert wollte.


' Zeile mit Suchwort gefunden
            If InStr(1, InputData, such) > 0 Then


Hier sollte dann folgendes passieren:

- gefundene CSV Datei mit dem gesuchten Suchwert öffnen
- Zeile für Zeile überprüfen in welcher Zeile das Suchwert sich befinde
- die gefundene Zeile mit gesuchten Wert auf Excel übergeben gesplittet


Danke! Danke ! Danke! dafür dass du mir hilfst !!!
(31.07.2018, 15:32)lulu183 schrieb: [ -> ]Das exportiert mir leider immer noch die gesamte CSV, während ich nur die einzelne Zeile mit Suchwert wollte.
Wenn Deine Ausführungen oben stimmen, kann das gar nicht sein, da dass Makro abbricht, wenn er den Wert einmal gefunden hat. Es könnte natürlich sein, dass die csv-Dateien anders aussehen als erwartet. Aber Du willst ja keine csv-Datei hochladen ...
Hallo =)

also die CSV Datei kann ich nicht hochladen.

Es ist aber nichts anderes als das was ich bisher geschrieben habe.

A1;A2;A3;$A4;;A5;A6;$A7;$A8;A9;A10;A11;A12;A13;A14;$A15;A16;
B1;B2;B3;$B4;;B5;B6;$B7;B8;B9;$B10;B11;$B12;
C1;C2;C3;$B4;;$C5;$C6;C7;C8;C9;$C10;$C11;$C12;$C13;


Du kannst es dir so vorstellen:
BESTELLUNG01;DATUM;KUNDENNUMMER;;$KATEGORIENUMMER_ARTIKEL;;KUNDENNUMMER;ARTIKELNUMMER;;$KATEGORIENUMMER_ARTIKEL;;KUNDENNUMMER;KATEGORIENUMMER_ARTIKEL;FARBE;

(Pro Kunde bzw. KUNDENNUMMER eine Zeile )
Jede Zeile kann unterschiedlich lang sein. Es kommt immer darauf an wie viele Artikel bestellt worden sind und welcher Art von Artikel.
Mein Suchwort ist die Kundennummer (die kommt in der gesuchten Zeile öfter vor).

Mein Ziel ist anhand der Kunden Nummer, die richtige CSV zu finden mit der richtigen Zeile die die Kundennummer beinhaltet und NUR diese dann auf EXCEL zu importieren. Selbstverständlich danach gesplittet.  


Wenn ich das Programm so abspielen lasse importiert er mir die ganze Datei, und ich habe alle Kundennummer stehen mit jeweils alle Artikeln gesplittet.
Moin!
Zur Vorsicht mal die Nachfrage:
Du verwendest ein 16 Jahre altes Excel?
Professionell, also als Produktiv-System?

Gruß Ralf
Seiten: 1 2 3 4