Excel txt-Import per VBA
Hallo,
ich habe mal wieder ein Problem, diesmal mit einem txt-Import. Ich muss aber öfters so etwas importieren; auch mit sehr vielen Daten.
Aus einer html-Datei möchte ich Zeilen in Excel importieren.
Screenshot:
HTML-Code:
Es sind immer vier Bereiche je Zeile. Als neue Zeile kann man ja hier eventuell "Ende Absatz/Zeilenumbruch/Anfang Absatz/ein nummerischer Wert" (z.B. "1.3") nehmen. Die Spalten haben ja das Pipe als Trennzeichen. Dann habe ich zumindest die zusammengehörigen Abschnitte richtig.
Nun können aber im 3. und 4. Bereich auch mehrere Werte stehen. diese sollen dann in extra Zeilen (als erster Bereich dann leer, zweiter Bereich wie in der Zeile darüber).
Ziel ist es, dass ich für jede Variante, welche in der vierten Spalte auch einen Wert hat eine neue Zeile mit vier Spalten erzeuge. Zum Schluß sollen alle Zeilen exakt vier Spalten haben. Ich möchte dann zum weiteren automatisierten Bearbeiten eine zusätzliche Spalte mit interner laufender Nummer hinzufügen, mit der ich durch dessen Angabe genau den zugehörigen Datensatz herausziehen und kopieren kann. Der Mitarbeiter gibt dann die interne Nummer ein und die Felder in seinem Excel-Dokument werden automatisch mit den zugehörigen Daten befüllt.
Leider bekomme ich die Daten nur als PDF oder HTML.
Puh, ganz schön schwierig zu erklären...
Vielleicht kann mir da jemand weiterhelfen, ist doch ganz schön kniffelig gerade weil die dritte und vierte Spalte mehrere Werte aufweisen können.
Vielen Dank schon mal im voraus !!!
Gruß
Torsten
Ach so, die HTML-Datei hat vor und nach dem Anhang noch viel Text, der nicht importiert werden soll. Kann ich den Import gleich so gestalten, dass erst ab einem bestimmten Schlüsselwort mit dem Import begonnen wird? (Absatz/"Anhang"/Absatz Ende)
ich habe mal wieder ein Problem, diesmal mit einem txt-Import. Ich muss aber öfters so etwas importieren; auch mit sehr vielen Daten.
Aus einer html-Datei möchte ich Zeilen in Excel importieren.
Screenshot:
HTML-Code:
Es sind immer vier Bereiche je Zeile. Als neue Zeile kann man ja hier eventuell "Ende Absatz/Zeilenumbruch/Anfang Absatz/ein nummerischer Wert" (z.B. "1.3") nehmen. Die Spalten haben ja das Pipe als Trennzeichen. Dann habe ich zumindest die zusammengehörigen Abschnitte richtig.
Nun können aber im 3. und 4. Bereich auch mehrere Werte stehen. diese sollen dann in extra Zeilen (als erster Bereich dann leer, zweiter Bereich wie in der Zeile darüber).
Ziel ist es, dass ich für jede Variante, welche in der vierten Spalte auch einen Wert hat eine neue Zeile mit vier Spalten erzeuge. Zum Schluß sollen alle Zeilen exakt vier Spalten haben. Ich möchte dann zum weiteren automatisierten Bearbeiten eine zusätzliche Spalte mit interner laufender Nummer hinzufügen, mit der ich durch dessen Angabe genau den zugehörigen Datensatz herausziehen und kopieren kann. Der Mitarbeiter gibt dann die interne Nummer ein und die Felder in seinem Excel-Dokument werden automatisch mit den zugehörigen Daten befüllt.
Leider bekomme ich die Daten nur als PDF oder HTML.
Puh, ganz schön schwierig zu erklären...
Vielleicht kann mir da jemand weiterhelfen, ist doch ganz schön kniffelig gerade weil die dritte und vierte Spalte mehrere Werte aufweisen können.
Vielen Dank schon mal im voraus !!!
Gruß
Torsten
Ach so, die HTML-Datei hat vor und nach dem Anhang noch viel Text, der nicht importiert werden soll. Kann ich den Import gleich so gestalten, dass erst ab einem bestimmten Schlüsselwort mit dem Import begonnen wird? (Absatz/"Anhang"/Absatz Ende)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 171340
Url: https://administrator.de/forum/excel-txt-import-per-vba-171340.html
Ausgedruckt am: 12.04.2025 um 08:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo,
wenn ich das richtig verstanden habe, dann willst du eigentlich dass es am Schluss genauso aussieht wie in der Tabelle, oder?
Versuch mal folgendes: Nimm die Funktion "Daten aus dem Web" und navigiere dann zu der Datei, die du willst. Dort wählst du die zu Importierende Tabelle aus und drückst "Importieren"
MfG,
Mathe172
wenn ich das richtig verstanden habe, dann willst du eigentlich dass es am Schluss genauso aussieht wie in der Tabelle, oder?
Versuch mal folgendes: Nimm die Funktion "Daten aus dem Web" und navigiere dann zu der Datei, die du willst. Dort wählst du die zu Importierende Tabelle aus und drückst "Importieren"
MfG,
Mathe172
Hallo,
was das Merkmal für neue Zeilen angeht: Eigentlich fängt ja nach jedem </P> eine neue Zeile an, oder? Wenn 4 "|" enthalten sind, ist es eine Zeile die Komplett ist, andernfalls müssen die ersten beiden Spalte übersprungen werden und die Daten in Spalte 3 und 4 eingetragen werden.
Meine Frage, ob es genau so wie in den Tabellen ausschauen soll, war wohl etwas unverständlich. Ich meinte einfach, ob die ersten Spalten genau wie in der Tabelle leer bleiben sollen, oder ob die Daten von darüber kopiert werden sollen.
MfG,
Mathe172
P.S.: Ich finde im Internet nicht exakt die Version der Daten die du hast. Könntest du mal einen Link posten (wenn es öffentlich zugänglich ist), denn das <P>-Tag ist normalerweise ja nicht für Tabellen. Vielleicht hilft es ja
was das Merkmal für neue Zeilen angeht: Eigentlich fängt ja nach jedem </P> eine neue Zeile an, oder? Wenn 4 "|" enthalten sind, ist es eine Zeile die Komplett ist, andernfalls müssen die ersten beiden Spalte übersprungen werden und die Daten in Spalte 3 und 4 eingetragen werden.
Meine Frage, ob es genau so wie in den Tabellen ausschauen soll, war wohl etwas unverständlich. Ich meinte einfach, ob die ersten Spalten genau wie in der Tabelle leer bleiben sollen, oder ob die Daten von darüber kopiert werden sollen.
MfG,
Mathe172
P.S.: Ich finde im Internet nicht exakt die Version der Daten die du hast. Könntest du mal einen Link posten (wenn es öffentlich zugänglich ist), denn das <P>-Tag ist normalerweise ja nicht für Tabellen. Vielleicht hilft es ja
Hallo,
schau dir mal das an:
Das Splittet den Text jeder Zeile bei "|" und fügt die Teile dann so ein, dass der letzte immer in Spalte 4 ist (Lässt sich in Zeile 4 definieren). Der Code funktioniert so aber nur im ersten Abschnitt, da danach 5 Spalten vorhanden sind.
Dort fehlt dann die Erste.
Aber mit etwas Anpassung sollte es möglich sein, vom Code alles richtig machen zu lassen.
MfG,
Mathe172
schau dir mal das an:
Dim Row As Integer
Row = 1
Dim LastColumn as Integer
LastColumn = 4
Dim Content() As String
Do Until Cells(Row, 1).Value = ""
Content = Split(Cells(Row, 1).Value, "|")
If Content(UBound(Content)) = "" Then ReDim Preserve Content(UBound(Content) - 1)
For i = 0 To LastColumn - 1
If LastColumn - 1 - UBound(Content) <= i Then
Cells(Row, i + 1).Value = Trim(Content(i -LastColumn + 1 + UBound(Content)))
Else
Cells(Row, i + 1).Value = ""
End If
Next
Row = Row + 1
Loop
Das Splittet den Text jeder Zeile bei "|" und fügt die Teile dann so ein, dass der letzte immer in Spalte 4 ist (Lässt sich in Zeile 4 definieren). Der Code funktioniert so aber nur im ersten Abschnitt, da danach 5 Spalten vorhanden sind.
Dort fehlt dann die Erste.
Aber mit etwas Anpassung sollte es möglich sein, vom Code alles richtig machen zu lassen.
MfG,
Mathe172