Hallo Rainer oder Sandra oder wer auch immer,
ich fürchte Du stellst Dir das etwas einfach vor und das Ergebnis des kleinen angepassten Makros unten wird auch nicht liefern was Du Dir denkst. Es nimmt den gesamten Text aus dem Body-Tag und schreibt ihn in eine Textdatei. Den Pfad musst Du für Dich anpassen, wenn Du es ausprobierst. Wenn Du in den Text guckst, wirst Du zwar den gesamten sichtbaren Text der Seite finden, aber z.B. auch sämtliche HTML Kommentare, die Du mit Sicherheit nicht willst. Darüber hinaus wird der Text einfach so übernommen, wie er in den Tags steht. Ist Text mittendrin durch zwei Tags getrennt, wird er durch das Makro unter Umständen direkt ohne Leerzeichen oder nicht in Tabellenform zusammengeklatscht.
Das liegt daran, dass man das Auslesen von Informationen aus Internetseiten nicht über die Inhalte steuert, sondern über die Struktur. Diese ist festgelegt über HTML-Tags und CSS-Klassen. Das bedeutet, um geziekt Informationen auszulesen, die man auch wirklich will und sie so abzuspeichern, dass sich damit auch etwas anfangen lässt, muss man auf die Einzelteile der Seite zugreifen. Für sehr strukturierte Daten, wie z.B. Tabellen, kann man das über PowerQuery ganz ohne VBA machen (da bin ich kein Experte für). Für Informationen, die über die Seite verstreut ist oder eine unregelmäßige Struktur aufweist, verwendet man das DOM (Docuemnt Object Model).
Mehr will ich an dieser Stelle eigentlich gar nicht dazu sagen, zumal ich davon ausgehe, dass die URL, die Du ins Makro geschrieben hast nicht die ist, die Du wirklich auslesen willst. Ich bin ansonsten nur im Herber Forum aktiv und habe da auch schon einiges zum DOM erklärt. Aber Du kannst auch einfach googeln, um Dich mit den Möglichkeiten vertraut zu machen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | Sub TextAusInternetSeiteSpeichern()
Dim IEApp As Object
Dim sTxt As String
Set IEApp = CreateObject( "InternetExplorer.Application" )
IEApp.Visible = True
Do : Loop Until IEApp.Busy = False
sTxt = IEApp.Document.getElementsByTagName( "Body" )(0).innertext
Close
Open "D:\Test.txt" For Output As #1
Print #1, sTxt
Close
IEApp.Quit
Set IEApp = Nothing
End Sub
|
Noch eine Anmerkung zur Methode ExecWB 4, 1. Dieser Befehl weist den IE an die Seite zu speichern. Selbst wenn das klappt, wobei ich Sendkeys nur in Notfällen einsetzen würde, passiert das jedoch als HTML Datei plus der zugehörigen Bilder und JavaScripte in einem extra Verzeichnis. Damit erreichst Du also nicht mal Ansatzweise was Du möchtest.
Viele Grüße,
Zwenn
|