Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1888to1892
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

über VBA txt durchsuchen, schleife

über VBA txt durchsuchen, schleife
15.07.2022 11:42:21
Caro
Hallo zusammen,
ich lasse über ein Makro eine .txt Datei öffnen. Die Daten aus der txt sollen ausgelesen, gesprlittet und in die Excel eingefügt werden. in den oberen Zeilen der .txt stehen allerdings Informationen die für diesen Fall uninteressant sind. Ich möchte die Do While Loop Schleife also nicht am Anafang der txt starten lassen sondern erst ab der Überschrift "Rohdaten".

Sub InformationenImportieren()
Dim Quelldatei As String
Dim Zeile As Integer
Dim Inhalt As String
Dim Informationen() As String
Dim i As Integer
'Tabellenblatt aktivieren
ThisWorkbook.Worksheets("Tabelle1").Activate
'Startwerte zuweisen
Zeile = 2
'QuellDatei ansprechen
Quelldatei = "C:\Downloads\12345.txt"
'QuellDatei öffnen
Open Quelldatei For Input As #1
'Informationen in das Tabellenblatt einfügen
Do While Not EOF(1)            'Schleife bis Datenende
'Inhalt der Quelldatei zeilenweise einlesen
Line Input #1, Inhalt
Informationen = Split(Inhalt, "=")
For i = 0 To UBound(Informationen)
'Infos auf Spalten aufteilen
'Wert in das Tabellenblatt eintragen
ActiveSheet.Cells(Zeile, 1) = Informationen(i)
Next
Zeile = Zeile + 1
Loop
'Quelldatei schließen
Close #1
End Sub

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: über VBA txt durchsuchen, schleife
15.07.2022 11:47:25
onur
Und WAS ist jetzt deine Frage ?
AW: über VBA txt durchsuchen, schleife
15.07.2022 11:49:53
Caro
Die Frage ist wie ich die Schleife nicht am Anfang der Textdatei Starte sondern erst ab der Überschrift "Rohdaten"?
AW: über VBA txt durchsuchen, schleife
15.07.2022 11:57:28
onur
Da die Textdatei sequentiell ausgelesen wird, also Wort nach Wort (bzw Zeile für Zeile), wirst du wohl nicht drumherum kommen, es mit DoWhile zu machen. Wie willst du denn sonst wissen, wo genau das Wort "Rohdaten" kommt?
Was du wohl meinst, ist die INNERE Schleife, die den Text in die Zellen schreibt, nur ausführen zu lassen, nachdem das Wort "Rohdaten" gefallen ist.
AW: über VBA txt durchsuchen, schleife
15.07.2022 13:21:07
Daniel
Hi
einfach eine Schleife vorschalten, die solange läuft bis "Rohdaten" kommt.
dann mit der Hauptschleife beginnen.
"Rohdaten" muss natürlich vorhanden sein.

Open Quelldatei For Input As #1
Do
Line Input #1, Inhalt
Loop until Inhalt = "Rohdaten"
'Informationen in das Tabellenblatt einfügen
Do While Not EOF(1)            'Schleife bis Datenende
'Inhalt der Quelldatei zeilenweise einlesen
Line Input #1, Inhalt
...
Gruß Daniel
Anzeige
AW: über VBA txt durchsuchen, schleife
15.07.2022 11:53:04
Oberschlumpf
Hi Caro,
was ist mit diesem Code?

For i = 0 To UBound(Informationen)
'Infos auf Spalten aufteilen
'Wert in das Tabellenblatt eintragen
ActiveSheet.Cells(Zeile, 1) = Informationen(i)
Next
alle Teile aus Informationen werden in immer die gleiche Spalte, nämlich 1 (A) geschrieben - wieso?
Willst du, dass immer nur der letzte Teil aus Informationen in Spalte A geschrieben wird?
Und eine Bsp-Txt-Datei per Upload wäre schön.
Ciao
Thorsten
AW: über VBA txt durchsuchen, schleife
15.07.2022 12:05:54
Caro
Hallo Thorsten,
bevor die Schleife wieder etwas neues Einträgt lasse ich doch in die nächste Zeile springen:
Zeile = Zeile + 1
Anzeige
AW: über VBA txt durchsuchen, schleife
15.07.2022 12:14:38
Oberschlumpf
das Wort "Rohdaten" ist in der Bsp-Datei gar nich vorhanden.
Bitte weise jetzt nich darauf hin, dass da doch "Rawdata" drin steht!
Ja, das stimmt, aber du hattest von "Rohdaten" geschrieben....und wenn man per Code dem Computer "befiehlt", nach dem Wert "Rohdaten" zu suchen, dann reicht die Computerintelligemnz nich aus, dass "Rawdata" doch das Gleiche is.....na ja, musste meinen Code nur anpassen...vielleicht hilfts ja.....denn ich mag nich mehr
Anzeige
AW: über VBA txt durchsuchen, schleife
15.07.2022 12:25:27
Oberschlumpf
Hi,
nee, tuste nich!
Hier mal der entscheidende Codeteil in komprimierter Form, also ohne Kommentare, Leerzeilen usw

Informationen = Split(Inhalt, "=")
For i = 0 To UBound(Informationen)
ActiveSheet.Cells(Zeile, 1) = Informationen(i)
Next
Zeile = Zeile + 1
nehmen wir mal aus deiner Bsp-Datei diese Zeile:

1=0,1;0,2
Informationen erhält diese Inhalte = ("1","0,1;0,2"), also 2 Inhalte
somit ist UBOUND von Informationen = 1, nämlich 0 und 1
in deiner For/Next wird ActiveSheet.Cells(Zeile, 1) angesprochen, ohne Zeile zu ändern
im 1. Durchlauf (0) erhält ActiveSheet.Cells(Zeile, 1) = "1"
im 2. Durchlauf (1) erhält ActiveSheet.Cells(Zeile, 1) = "0,1;0,2"; und somit wird das vorherige "1" einfach überschrieben
erst nach Ende von For/Next erhöhst du Zeile = Zeile + 1
Ciao
Thorsten
Anzeige
versuch mal
15.07.2022 12:04:17
Oberschlumpf
Hi Caro,
versuch mal das hier (von mir ungetestet)

Sub InformationenImportieren()
Dim Quelldatei As String
Dim Zeile As Long
Dim lstrCont As String, larstrCont() As String, liIdx As Integer, larSplit() As String
'QuellDatei ansprechen
Quelldatei = "C:\Downloads\12345.txt"
Open Quelldatei For Binary As #1
lstrCont = Space$(LOF(1))
Get 1, , lstrCont
Close
larstrCont = Split(lstrCont, vbCrLf)
Zeile = 2
With Sheets("Tabelle1")
For liIdx = 0 To UBound(larstrCont)
If InStr(larstrCont(liIdx), "Rohdaten") Or _
.Range("A2").Value  "" Then
larSplit = Split(larstrCont(liIdx), "=")
.Range("A" & Zeile).Value = larSplit(UBound(larSplit))
Zeile = Zeile + 1
End If
Next
End With
End Sub
Hilfts?
Wenn nein, bitte Bsp-Datei.
Ciao
Thorsten
Anzeige
AW: versuch mal
15.07.2022 12:57:58
Caro
Danke, ich muss noch ein paar andere Sachen anpassen und werde es dann nochmal mit deinem Code versuchen.
AW: über VBA txt durchsuchen, schleife
15.07.2022 12:13:54
snb
Es gibt kein Überschrift "Rohdaten".
AW: über VBA txt durchsuchen, schleife
15.07.2022 12:15:31
onur
Siehe unten: [Rawdata]
AW: über VBA txt durchsuchen, schleife
15.07.2022 12:21:52
snb
VBA ist kein Polyglott ;)
AW: über VBA txt durchsuchen, schleife
15.07.2022 12:23:15
onur
Wie ? Kann Office 365 nicht einmal automatisch übersetzen?
AW: über VBA txt durchsuchen, schleife
15.07.2022 12:35:22
Caro
Ich bin zwar kein VBA Profi, aber wenn mir ein Code vorgeschlagen werden würde würde ich es gerade noch selbst hinbekommen das Wort Rohdaten in Rawdata umzubenennen!
AW: über VBA txt durchsuchen, schleife
15.07.2022 12:40:11
Oberschlumpf
ähhh?...ich hatte dir n Code vorgeschlagen!
AW: über VBA txt durchsuchen, schleife
15.07.2022 13:28:39
onur
Dann nimm das hier:

Sub TXTlesen()
Dim ff As Integer
Dim z As Integer, i
Dim flag As Boolean
Dim txt
txt = "C:\Users\onure\Desktop\154173.txt" 'HIER EIGENEN PFAD EINGEBEN
ff = FreeFile
z = 1
Open txt For Input As #ff
Do While Not EOF(ff)
Line Input #ff, txt
If txt = "[Rawdata]" Then flag = True
If txt  "[Rawdata]" And flag Then
txt = Split(Right(txt, Len(txt) - InStr(txt, "=")), ";")
For i = 0 To UBound(txt)
Cells(z, i + 1) = CDbl(txt(i))
Next i
z = z + 1
End If
Loop
Close #ff
End Sub

Anzeige
AW: über VBA txt durchsuchen, schleife
15.07.2022 14:06:30
Caro
Das funktioniert, vielen Dank
Gerne !
15.07.2022 14:07:32
onur
AW: über VBA txt durchsuchen, schleife
15.07.2022 12:18:12
snb

Sub M_snb()
with createobject("scripting.filesystemobject")
.createtextfile("C:\downloads\snb.txt").write split(.opentextfile("C:\Downloads\12345.txt").readall,"data]")(1)
end with
workbooks.open "C:\downloads\snb.txt"
End Sub

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige