VR6 Geschrieben 25. April 2006 Geschrieben 25. April 2006 Hallo, ich habe ein Problem ich möchte eine HTML-Tabelle (zB.1.Bundesliga-Tabelle) via VBA nach excel übertragen und es soll dann eine Excel-Tabelle werden. Nun war ich soweit das die ich alles aus der HTML-Tabelle ausgelesen habe und nunwill ich aber mit Hilfe der regulären Ausdrücke die Tags entfernen damit nur noch die Daten stehen bleiben.Diese will ich dann wiederum in die Excel-Tabelle schreiben. Jetzt hänge ich aber bei den Ausdrücken und brauch ein Gedankenanstoß, denn es stehn noch ein Haufen Leerzeichen und Semikolon da und die bekomme ich nicht weg. Option Explicit Public Function GetFile(Tabelle) Dim Html As String Open "D:\Eigene Uebungen Kevin\VBA\tabelle.htm" For Input As #1 Do While Not EOF(1) Line Input #1, Tabelle Html = Html & Tabelle & vbCrLf Loop Close #1 Html2Text (Html) End Function Public Sub Html2Excel() Dim Html, Text, Tabelle, strText As String Html = GetFile(Tabelle) Text = Html2Text(strText) Text2Excel (strText) End Sub Public Function Html2Text(strText) Dim strPattern As String Dim strRetStr As String Dim strReplace As String Dim Tabelle As String Dim Html As String strText = Html strPattern = "<+.+?>" strReplace = ";" strRetStr = GetRegExpString(strText, strPattern, strReplace) Debug.Print strRetStr End Function Public Function Text2Excel(Html) Cells(1, 1).Value = Html End Function Public Function GetRegExpString(ByVal vsStringIn As String, ByVal vsPattern As String, ByVal vsReplace As String) As String Dim objRegExp As RegExp Set objRegExp = New RegExp objRegExp.IgnoreCase = False objRegExp.Global = True objRegExp.Pattern = vsPattern GetRegExpString = objRegExp.Replace(vsStringIn, vsReplace) Set objRegExp = Nothing End Function und meine HTML-Tabelle: <TABLE CELLPADDING=4 BORDER=0> <TR BGCOLOR="Red"><TH COLSPAN=2>Platz<TH>Mannschaft<TH>Spl.<TH>gew.<TH>rem.<TH>verl.<TH>Tore<TH>Dif.<TH>Pkt. <TR BGCOLOR="Green"> <TD ALIGN=right> 1 <TD ALIGN=right> 1 <TD> 1. FC Kaiserslautern <TD ALIGN=right> 34 <TD ALIGN=right> 19 <TD ALIGN=right> 11 <TD ALIGN=right> 4 <TD> 74 : 28 <TD ALIGN=right> 46 <TD ALIGN=right> 68 <TR BGCOLOR="Green"> <TD ALIGN=right> 2 <TD ALIGN=right> 3 <TD> VfL Wolfsburg <TD ALIGN=right> 34 <TD ALIGN=right> 14 <TD ALIGN=right> 16 <TD ALIGN=right> 4 <TD> 52 : 29 <TD ALIGN=right> 23 <TD ALIGN=right> 58 <TR BGCOLOR="Green"> <TD ALIGN=right> 3 <TD ALIGN=right> 2 <TD> Hertha BSC Berlin <TD ALIGN=right> 34 <TD ALIGN=right> 17 <TD ALIGN=right> 7 <TD ALIGN=right> 10 <TD> 57 : 38 <TD ALIGN=right> 19 <TD ALIGN=right> 58 <TR BGCOLOR="White"> <TD ALIGN=right> 4 <TD ALIGN=right> 4 <TD> FSV Mainz 05 <TD ALIGN=right> 34 <TD ALIGN=right> 14 <TD ALIGN=right> 12 <TD ALIGN=right> 8 <TD> 50 : 34 <TD ALIGN=right> 16 <TD ALIGN=right> 54 <TR BGCOLOR="White"> <TD ALIGN=right> 5 <TD ALIGN=right> 5 <TD> Stuttgarter Kickers <TD ALIGN=right> 34 <TD ALIGN=right> 14 <TD ALIGN=right> 11 <TD ALIGN=right> 9 <TD> 38 : 27 <TD ALIGN=right> 11 <TD ALIGN=right> 53 <TR BGCOLOR="White"> <TD ALIGN=right> 6 <TD ALIGN=right> 6 <TD> SpVgg Unterhaching <TD ALIGN=right> 34 <TD ALIGN=right> 11 <TD ALIGN=right> 16 <TD ALIGN=right> 7 <TD> 35 : 29 <TD ALIGN=right> 6 <TD ALIGN=right> 49 <TR BGCOLOR="White"> <TD ALIGN=right> 7 <TD ALIGN=right> 8 <TD> Eintracht Frankfurt <TD ALIGN=right> 34 <TD ALIGN=right> 13 <TD ALIGN=right> 9 <TD ALIGN=right> 12 <TD> 43 : 46 <TD ALIGN=right> -3 <TD ALIGN=right> 48 <TR BGCOLOR="White"> <TD ALIGN=right> 8 <TD ALIGN=right> 7 <TD> VfB Leipzig <TD ALIGN=right> 34 <TD ALIGN=right> 12 <TD ALIGN=right> 10 <TD ALIGN=right> 12 <TD> 53 : 54 <TD ALIGN=right> -1 <TD ALIGN=right> 46 <TR BGCOLOR="White"> <TD ALIGN=right> 9 <TD ALIGN=right> 11 <TD> KFC Uerdingen 05 <TD ALIGN=right> 34 <TD ALIGN=right> 13 <TD ALIGN=right> 5 <TD ALIGN=right> 16 <TD> 46 : 44 <TD ALIGN=right> 2 <TD ALIGN=right> 44 <TR BGCOLOR="White"> <TD ALIGN=right> 10 <TD ALIGN=right> 9 <TD> SV Meppen <TD ALIGN=right> 34 <TD ALIGN=right> 10 <TD ALIGN=right> 14 <TD ALIGN=right> 10 <TD> 44 : 48 <TD ALIGN=right> -4 <TD ALIGN=right> 44 <TR BGCOLOR="White"> <TD ALIGN=right> 11 <TD ALIGN=right> 13 <TD> Fortuna Köln <TD ALIGN=right> 34 <TD ALIGN=right> 11 <TD ALIGN=right> 9 <TD ALIGN=right> 14 <TD> 52 : 47 <TD ALIGN=right> 5 <TD ALIGN=right> 42 <TR BGCOLOR="White"> <TD ALIGN=right> 12 <TD ALIGN=right> 12 <TD> Carl Zeiss Jena <TD ALIGN=right> 34 <TD ALIGN=right> 9 <TD ALIGN=right> 15 <TD ALIGN=right> 10 <TD> 44 : 49 <TD ALIGN=right> -5 <TD ALIGN=right> 42 <TR BGCOLOR="White"> <TD ALIGN=right> 13 <TD ALIGN=right> 14 <TD> FC Gütersloh <TD ALIGN=right> 34 <TD ALIGN=right> 12 <TD ALIGN=right> 9 <TD ALIGN=right> 13 <TD> 43 : 51 <TD ALIGN=right> -8 <TD ALIGN=right> 42 <TR BGCOLOR="White"> <TD ALIGN=right> 14 <TD ALIGN=right> 10 <TD> FSV Zwickau <TD ALIGN=right> 34 <TD ALIGN=right> 12 <TD ALIGN=right> 6 <TD ALIGN=right> 16 <TD> 34 : 48 <TD ALIGN=right> -14 <TD ALIGN=right> 42 <TR BGCOLOR="Red"> <TD ALIGN=right> 15 <TD ALIGN=right> 15 <TD> SV Waldhof Mannheim <TD ALIGN=right> 34 <TD ALIGN=right> 10 <TD ALIGN=right> 10 <TD ALIGN=right> 14 <TD> 45 : 56 <TD ALIGN=right> -11 <TD ALIGN=right> 40 <TR BGCOLOR="Red"> <TD ALIGN=right> 16 <TD ALIGN=right> 16 <TD> VfB Lübeck <TD ALIGN=right> 34 <TD ALIGN=right> 8 <TD ALIGN=right> 12 <TD ALIGN=right> 14 <TD> 32 : 53 <TD ALIGN=right> -21 <TD ALIGN=right> 36 <TR BGCOLOR="Red"> <TD ALIGN=right> 17 <TD ALIGN=right> 17 <TD> Rot-Weiß Essen <TD ALIGN=right> 34 <TD ALIGN=right> 8 <TD ALIGN=right> 5 <TD ALIGN=right> 21 <TD> 47 : 74 <TD ALIGN=right> -27 <TD ALIGN=right> 29 <TR BGCOLOR="Red"> <TD ALIGN=right> 18 <TD ALIGN=right> 18 <TD> VfB Oldenburg <TD ALIGN=right> 34 <TD ALIGN=right> 6 <TD ALIGN=right> 9 <TD ALIGN=right> 19 <TD> 33 : 67 <TD ALIGN=right> -34 <TD ALIGN=right> 27 </TABLE> ich hoffe mi kann jemand helfen Gruß VR6 Zitieren
isardor Geschrieben 28. April 2006 Geschrieben 28. April 2006 Hmm, direkt Helfen kann ich dir da nicht. allerdings hast du in dem HTML weder die Zeilen noch die Spalten abgeschlossen, was im endeffekt dazu führt, dass alle werte in de ersten Zeile in der ersten Spalte geschreiben werden und innerhalb dieser verschachtelt werden. Du solltest schon richtig schreiben <table> <tr> <td> 1 </td> </tr> <tr> . . . </table> [/PHP] Und dann kannst du jeweils den anfang einer Zeile, den anfang und das ende der enthaltenen spalten, das ende der Zeile usw. abfragen. Zitieren
VR6 Geschrieben 12. Mai 2006 Autor Geschrieben 12. Mai 2006 Ok hab das Problem bereits andersweitig gelöst Vielen Dank trotzdem Zitieren
gordonski Geschrieben 14. Mai 2006 Geschrieben 14. Mai 2006 Hm, da hast du aber das Pferd von hinten aufgezäumt... mach doch einfach'n Webquery, dann musst du nicht per 100-Zeilen-Makro den html-Code übersetzen. Gordonski Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.