27.07.2018, 11:17
(Dieser Beitrag wurde zuletzt bearbeitet: 27.07.2018, 11:20 von WillWissen.
Bearbeitungsgrund: Codetags
)
Hallo VBA Experten
ich bin VBA Anfänger und brauche etwas Hilfe
Ich benötigte ein Programm, der mir anhand einer Suchfunktion die ganze Zeile einer CSV Datei ausgibt.
Ich habe einen Archivordner, dort befinden sich mehrere CSV Dateien. In den einzelnen CSV Dateien sind mehrere Zeilen (>10000).
Die CSV Dateien sind alle gleich aufgebaut, nur mit andere Werte.
BSP Aufbau einer CSV DATEI :
Zeile 1: A1;A2;A3;$A4;;A5;A6;$A7;$A8;A9;A10;A11;A12;A13;A14;$A15;A16;
Zeile 2: B1;B2;B3;$B4;;B5;B6;$B7;B8;B9;$B10;B11;$B12;
Zeile 3: C1;C2;C3;$B4;;$C5;$C6;C7;C8;C9;$C10;$C11;$C12;$C13;
....
Das Programm sollte mich beim Starten nach dem Suchbegriff fragen. Das Programm sollte dann Automatisch im Archivordner durch alle CSV Dateien suchen.
Das Suchbegriff befindet sich immer an der dritten Stelle (Bsp.: A3, B3, C3) einer Zeile.
Das Programm muss alle CSV Dateien in den Archivordner durchsuchen und mir die Zeile ausgeben, aus der entsprechende CSV Datei mit den Suchbegriff.
Als letztes muss dann, die gesuchte Zeile in einer EXCEL Tabelle ab Zeile 13 ausgegeben werden.
Dabei sollte für jeden ";" und "$" gesplittet werden.
Für jeden ";" kommt der nächste Wert in der nächste Spalte der EXCEL TABELLE.
Für jeden "$" Zeile kommt der nächste Wert in einer neuen Zeile der EXCEL TABELLE.
Außerdem sollte in B5 der Name der CSV. Datei stehen i der das Suchbegriff sich befindet.
Falls der Suchbegriff nicht in den CSV Dateien existiert, soll eine MSG Box erscheinen mit: "Suchbegriff nicht gefunden!"
Was mein Programm tut:
- gibt mir die alle Zeilen der entsprechenden CSV Datei ab, gesplittet...
Was ich möchte:
- nur die gesuchte Zeile gesplittet ... ab Zeile 13
Ich hoffe ihr Könnt mir helfen
Mein Programm:
ich bin VBA Anfänger und brauche etwas Hilfe
Ich benötigte ein Programm, der mir anhand einer Suchfunktion die ganze Zeile einer CSV Datei ausgibt.
Ich habe einen Archivordner, dort befinden sich mehrere CSV Dateien. In den einzelnen CSV Dateien sind mehrere Zeilen (>10000).
Die CSV Dateien sind alle gleich aufgebaut, nur mit andere Werte.
BSP Aufbau einer CSV DATEI :
Zeile 1: A1;A2;A3;$A4;;A5;A6;$A7;$A8;A9;A10;A11;A12;A13;A14;$A15;A16;
Zeile 2: B1;B2;B3;$B4;;B5;B6;$B7;B8;B9;$B10;B11;$B12;
Zeile 3: C1;C2;C3;$B4;;$C5;$C6;C7;C8;C9;$C10;$C11;$C12;$C13;
....
Das Programm sollte mich beim Starten nach dem Suchbegriff fragen. Das Programm sollte dann Automatisch im Archivordner durch alle CSV Dateien suchen.
Das Suchbegriff befindet sich immer an der dritten Stelle (Bsp.: A3, B3, C3) einer Zeile.
Das Programm muss alle CSV Dateien in den Archivordner durchsuchen und mir die Zeile ausgeben, aus der entsprechende CSV Datei mit den Suchbegriff.
Als letztes muss dann, die gesuchte Zeile in einer EXCEL Tabelle ab Zeile 13 ausgegeben werden.
Dabei sollte für jeden ";" und "$" gesplittet werden.
Für jeden ";" kommt der nächste Wert in der nächste Spalte der EXCEL TABELLE.
Für jeden "$" Zeile kommt der nächste Wert in einer neuen Zeile der EXCEL TABELLE.
Außerdem sollte in B5 der Name der CSV. Datei stehen i der das Suchbegriff sich befindet.
Falls der Suchbegriff nicht in den CSV Dateien existiert, soll eine MSG Box erscheinen mit: "Suchbegriff nicht gefunden!"
Was mein Programm tut:
- gibt mir die alle Zeilen der entsprechenden CSV Datei ab, gesplittet...
Was ich möchte:
- nur die gesuchte Zeile gesplittet ... ab Zeile 13
Ich hoffe ihr Könnt mir helfen
Mein Programm:
Code:
Sub Pro1_Test()
Dim sPath As String
Dim sSearchPath As String
Dim FileName As String
Dim InputData
Dim Tmp
Dim Tmpp
Dim vTmp As Variant
Dim vTmpp As Variant
Dim str As Variant
Dim vnt As Variant
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
sSearchPath = "N:ArchivArchiv12*.csv"
sPath = "N:ArchivArchiv12"
FileName = Dir(sSearchPath)
vnt = "NEIN"
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 = "JA"
arr = split(InputData, vbCrLf)
vTmp = split(arr(i), "$")
For i = 0 To UBound(vTmp) - 1
If Len(vTmp(i)) > 0 Then
str = split(vTmp(i), ";")
Range(Cells(i + 13, 1), Cells(i + 13, UBound(str))) = str
Range("B7") = FileName
End If
Next
End If
Loop
Close #1
FileName = Dir ' nächste Datei durchsuchen
Loop
End If
If vnt = "NEIN" Then
MsgBox "Suchbegriff nicht gefunden!"
End If
End Sub