Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: HTML in VBA in Variable speichern

HTML in VBA in Variable speichern
29.07.2016 12:06:35
Johannes
Guten Tag,
mit folgendem VBA Code ziehe ich mir gerade den HTML Quellcode von Boardex.
Leider funktioniert er nur auf der Startseite.
Sobald ich von einem Profil dort (für das ich eingeloggt sein muss und bin) den HTML Code haben will klappt es nicht. es wird zwar die Seite geöffnet, ich bin eingeloggt und habe Zugriff auf das Profil, aber der Quelltext erscheint nicht in meiner Tabelle, auf der Startseite funktioniert er jedoch perfekt.
also mit dem Link in Zelle 1,2 geht es perfekt: boardex.com
mit diesem nicht: https://www.boardex.com/director/profile/default.aspx?menuCat=2&pCategory=1&dir_id=485658 (das ist der link zu einem profil)
Kann mir da jemand weiterhelfen?
Sub hallo()
Dim WebBrowser1 As Object
Dim i As Integer, AktValue As String
Set WebBrowser1 = CreateObject("InternetExplorer.Application")
WebBrowser1.Visible = True ' zum testen anzeigen
WebBrowser1.Navigate Worksheets("Tabelle1").Cells(1, 2)
While WebBrowser1.ReadyState  4
'Warten, bis Seite geladen ist
DoEvents
Wend
strVersuch = WebBrowser1.Document.All(0).outerHTML
Worksheets("Tabelle1").Cells(1, 1) = strVersuch
'Debug.Print strVersuch
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: HTML in VBA in Variable speichern
01.08.2016 18:47:37
Zwenn
Hallo Johannes,
da vermutlich niemand von den Leuten hier einen Account auf der von Dir verlinkten Seite hat und man sich auch so ohne weiteres keinen erstellen kann (oder ich habe es auf die Schnelle nicht entdeckt), wird Dir hier vermutlich niemand so richtig helfen können, weil niemand eine Profilseite aufrufen kann.
Grade habe ich gesehen, dass Du das All-Objekt vom Dokument verwendest. Das sollte man eigentlich nicht mehr machen, da es veraltet ist. Aber für das was Du willst wird es noch reichen. Ich bin nicht ganz sicher, aber wenn ich mich richtig erinnere, dann wird der Zusatz (0) hinter WebBrowser1.Document.All nicht benötigt. Die (0) verweist auf das erste Element eines Arrays von Elementen. Bei All hast Du aber nur ein Element, nämlich alles. Versuchs einfach mal ohne (0). Das müsste analog zu GetElementByID funktionieren.
Abgesehen davon noch ein Hinweis:
Beachte bitte, welche Daten Du abrufst. Sobald Du automatisiert personenbezogene Daten nach einem LogIn einliest, die nicht Deine eigenen sind oder für die Du keine Genemigung von den Personen hast, zu denen die Daten gehören, begibst Du Dich datenschutztechnisch auf sehr dünnes Eis. Das gilt insbesondere zu beachten, falls Du Dein Projekt im Rahmen Deiner Arbeit vorantreibst.
Viele Grüße,
Zwenn
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

HTML in VBA in Variable speichern


Schritt-für-Schritt-Anleitung

Um eine HTML-Variable in VBA zu definieren und auszugeben, kannst du die folgenden Schritte befolgen:

  1. Öffne dein Excel-Dokument und gehe zu den Entwicklertools.

  2. Erstelle ein neues Modul:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Rechtsklicke im Projektfenster und wähle „Einfügen“ > „Modul“.
  3. Füge den folgenden Code ein:

    Sub hallo()
       Dim WebBrowser1 As Object
       Dim strVersuch As String
       Set WebBrowser1 = CreateObject("InternetExplorer.Application")
       WebBrowser1.Visible = True ' Zum Testen anzeigen
       WebBrowser1.Navigate Worksheets("Tabelle1").Cells(1, 2)
       While WebBrowser1.ReadyState <> 4
           DoEvents
       Wend
       strVersuch = WebBrowser1.Document.body.innerHTML ' HTML-Variable definieren
       Worksheets("Tabelle1").Cells(1, 1) = strVersuch ' HTML-Variable ausgeben
    End Sub
  4. Ersetze den Link in Zelle 1,2 durch die gewünschte URL.

  5. Starte das Makro, um die HTML-Daten in der definierten Variable zu speichern und auszugeben.


Häufige Fehler und Lösungen

  1. Fehler: Quelltext erscheint nicht in der Tabelle

    • Lösung: Stelle sicher, dass du die richtige URL verwendest und dass die Seite vollständig geladen ist, bevor du versuchst, den HTML-Code abzurufen.
  2. Verwendung von All(0)

    • Lösung: Anstelle von WebBrowser1.Document.All(0).outerHTML, nutze WebBrowser1.Document.body.innerHTML, um die HTML-Variable korrekt zu definieren.
  3. Datenschutzprobleme

    • Lösung: Sei dir bewusst, dass das automatisierte Abrufen von personenbezogenen Daten ohne Zustimmung problematisch sein kann.

Alternative Methoden

Wenn du keine Internet Explorer-Objekte verwenden möchtest, könntest du auch die XMLHTTP-Methode nutzen, um HTML-Daten abzurufen. Hier ist ein Beispiel:

Sub GetHTML()
    Dim http As Object
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", Worksheets("Tabelle1").Cells(1, 2), False
    http.send
    Dim strHTML As String
    strHTML = http.responseText ' HTML-Variable definieren
    Worksheets("Tabelle1").Cells(1, 1) = strHTML ' HTML-Variable ausgeben
End Sub

Praktische Beispiele

Angenommen, du möchtest die HTML-Daten von einer Profilseite abrufen. Du könntest die URL wie folgt in Zelle A2 eingeben:

https://www.boardex.com/director/profile/default.aspx?menuCat=2&pCategory=1&dir_id=485658

Führe dann das Makro hallo aus, um den HTML-Inhalt in Zelle A1 zu speichern.


Tipps für Profis

  • Fehlerbehandlung einbauen: Verwende On Error Resume Next, um Fehler beim Abrufen der HTML-Daten zu behandeln.
  • Reguläre Ausdrücke: Nutze reguläre Ausdrücke, um spezifische Daten aus dem HTML-Code herauszufiltern.
  • Automatisierung: Kombiniere mehrere Makros, um wiederkehrende Aufgaben zu automatisieren.

FAQ: Häufige Fragen

1. Kann ich die HTML-Variable in eine andere Excel-Datei exportieren?
Ja, du kannst die HTML-Variable in eine andere Excel-Datei exportieren, indem du die entsprechende Workbook- und Worksheet-Referenz angibst.

2. Welche Excel-Version benötige ich für VBA?
VBA ist in den meisten Versionen von Microsoft Excel verfügbar. Stelle sicher, dass du eine Version verwendest, die VBA unterstützt, wie Excel 2010 oder höher.

3. Wie kann ich sicherstellen, dass die Webseite vollständig geladen ist?
Der Code verwendet eine Schleife (While WebBrowser1.ReadyState <> 4), um sicherzustellen, dass die Seite vollständig geladen ist, bevor die HTML-Daten abgerufen werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige