2016-08-01 7 views
0

Ich habe bereits die Webseite als HTML heruntergeladen und im lokalen Ordner gespeichert. Nun möchte ich die gleiche HTML-Datei mit Excel-VBA-Makro lesen und für bestimmte Tags analysieren. Das Problem ist: Die HTML-Tag-Attribute werden geändert, wenn ich versuche, aus der lokalen HTML-Datei zu lesen und die gesamten Dateidaten als HTML zuzuweisen.Problem lesen Textdateien mit HTML-Tags und konvertieren sie in htmldoc VBA

Ich konnte nicht die richtigen HTML-Attribute erhalten, daher konnte ich es nicht parsen. Wenn ich versuche, das HTML zu lesen, dann einem HTML-Objekt zuzuordnen und die Daten in eine Datei zurückzuschreiben, sehe ich die folgenden Ergebnisse. Das ist der Grund, warum ich für td.classname = "detb" nicht richtig analysieren konnte.

für ex: Teil des Original-Tages wie in der lokalen HTML-Datei

<tbody> 
<tr height=""22""> 
<td width=""40%"" class=""detb"" colspan=""1""></td> 

<td align=""right"" class=""detb"">Mar 13</td> 
<td align=""right"" class=""detb"">Mar 12</td> 
<td align=""right"" class=""detb"">Mar 11</td> 
<td align=""right"" class=""detb"">Mar 10</td> 
<td align=""right"" class=""detb"">Mar 09</td> 
</tr> 

Unten ist die Art von Daten, wenn ich die Datei lesen und zuweisen, um einen zu einem HTML-Objekt und Anzeige/schreiben zurück Datei:

<tbody><tr height="""" 22""""=""""> 
<td width="""" colspan=""1"" 1""""="""" 40%""""="""" detb""""=""""></td> 

<td align="""" right""""="""" detb""""="""">Mar 13</td> 
<td align="""" right""""="""" detb""""="""">Mar 12</td> 
<td align="""" right""""="""" detb""""="""">Mar 11</td> 
<td align="""" right""""="""" detb""""="""">Mar 10</td> 
<td align="""" right""""="""" detb""""="""">Mar 09</td> 
</tr> 

Code:

Set MyBrowser = CreateObject("InternetExplorer.Application") 

With MyBrowser 
    .navigate << html file path >> 
    .Visible = True 

    Set HTMLDoc = MyBrowser.document 


    Open myFilePrev2 For Output As #1 
    Write #1, HTMLDoc.body.innerHTML 
    Close #1 

    .Quit 
End With 

können Sie mir bitte helfen.

Cheers, Raghav

Antwort

0
Write #1, HTMLDoc.body.innerHTML 

Print #1, HTMLDoc.body.innerHTML 

https://msdn.microsoft.com/en-us/library/office/gg264524(v=office.14).aspx

Im Gegensatz zum Drucken # Anweisung sein sollte, fügt die Write #statement Kommata zwischen den einzelnen Posten und um Anführungszeichen Zeichenfolgen wie sie geschrieben werden in die Datei. Sie müssen keine expliziten Trennzeichen in die Liste einfügen. Write # fügt ein Zeilenvorschubzeichen ein, dh einen Wagen return-linefeed (Chr (13) + Chr (10)), nachdem das letzte Zeichen in der Ausgabeliste in die Datei geschrieben wurde.

+0

Hallo Tim, Danke für deinen Vorschlag. Ich werde das versuchen. Mehr als das Schreiben des Inhalts in eine Datei, ist mein Problem in erster Linie das Lesen der Textdatei mit HTML-Tags und das Zuweisen der gesamten Datei zu einem htmldoc. Ich versuchte diese Rückschreibstrategie, nur um zu überprüfen, wie lokale Textdatei (mit HTML-Tags) gelesen wurde, da sie nicht alle Attribute wie in der ursprünglichen HTML-Datei zur Verfügung stellte. Um klar zu sein, Problem ist nach dem Öffnen der HTML-Datei im Internet exp & Speichern von Quellcode zu "HTMLDoc", ich bin nicht in der Lage, die Tag-Bedingung "td.classname =" detb ", die in der Eingabe-HTML existiert ... – Raghavan

Verwandte Themen