Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1304to1308
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

MSXML2.XMLHTTP-Objekt parsen/ GetElementByID

MSXML2.XMLHTTP-Objekt parsen/ GetElementByID
02.04.2013 10:21:23
Arthur
Hallo VBA-Gemeinde.
Ich muss eine Intranetseite auslesen. Leider sind 'Alerts' eingebaut, sodass der direkte Weg über das Webbrowser-Objekt nicht geht. Im Forum wurde mir mit nachfolgenden Zeilen geholfen .... nur kann ich jetzt nicht mehr parsen.
Im Webbrowser ist es möglich per GetElementByID zügig in die Nähe der gewünschten Info zu springen und danach in einer kleinen Schleife an's Ziel zu kommen. Alles zu Fuß zu erledigen dauert zu lange.
Hat ein XMLHTTP-Objekt eine ähnliche Möglichkeit?
Hier der 'neue' Lösungsansatz:
Sub b()
Dim objXMLHTTP As Object
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.Open "GET", "https://www.google.de", False
objXMLHTTP.send
If objXMLHTTP.Status = 200 Then
Debug.Print objXMLHTTP.Responsetext
End If
Set objXMLHTTP = Nothing
End Sub

Hier das 'Alert'-Problem, das Minibeispiel der html-Seite:
#
#alert('Testing');
#
Gruß, Arthur

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Könntest du das nicht mit J[ava]Script oder ...
02.04.2013 15:02:10
Luc:-?
…VBScript versuchen, Arthur?
Quelltext kopieren, auswerten und ggf in entsprd Form in ein Worksheet-Objekt (nur IE!; oder was du haben willst) schreiben.
Gruß Luc :-?

AW: Könntest du das nicht mit J[ava]Script oder ...
02.04.2013 15:42:29
Arthur
Hi Luc.
Die Funktion soll in einfachem VBA eingebettet sein. Ob mir da ein Scripting hilft entzieht sich meiner Kenntnis. So umfangreich sind meine Kenntnisse nicht. Es würde mir genügen die Seite einzuladen und auswerten zu können. Leider liefert mir das 'Bordmittel' Webbrowser-Objekt keine Möglichkeit die Seite zu laden ohne sie gleich auszuführen. Und die kleine Beispielroutine liefert mir den Inhalt, leider ohne ihn halbwegs zielgerichtet auswerten zu können.
Dennoch Danke für die Gedanken.
Gruß, Arthur

Anzeige
MSXML2.XMLHTTP-Objekt parsen/ GetElementByID
02.04.2013 15:31:36
Anton
Hallo Arthur,
so vllt:
Sub b()
Dim objXMLHTTP As Object, IEApp As Object
Dim strTemp As String, strInhalt As String
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.Open "GET", "https://www.google.de", False
objXMLHTTP.send
If objXMLHTTP.Status = 200 Then
strInhalt = objXMLHTTP.Responsetext
strTemp = "C:\temp\temp.htm" 'anpassen
Open strTemp For Output As #1
Print #1, Replace(strInhalt, "alert", "arthur=")
Close
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = True
IEApp.Navigate strTemp
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Document.ReadyState = "complete"
'auswerten
Set IEApp = Nothing
Kill strTemp
End If
Set objXMLHTTP = Nothing
End Sub

mfg Anton

Anzeige
AW: MSXML2.XMLHTTP-Objekt parsen/ GetElementByID
02.04.2013 15:46:56
Arthur
Hallo Anton.
Der Lösungsansatz scheint mir in der Tat zum Ziel zu führen. Nur sind mir Hilfsdateien ein kleiner Dorn auf der Festplatte. Vielleicht muss ich in diesen sauren Apfel beißen ... ohne einen Wurm zu treffen. Hätte M$ mal einen Parameter eingebaut um die Ausführung der Alerts zu unterbinden. In VBohneA gibt es sowas anscheinend.
Vielen Dank für den Lösungsgedanken.
Gruß, Arthur

MSXML2.XMLHTTP Daten an Webbrowser-Objekt senden
02.04.2013 15:52:47
Arthur
Hallo zusammen.
Mein Problem ist noch immer, dass eine Lösung mir die Daten mit Alert aber auswertbar bringt, die andere die Daten ohne Alert und nicht (zielgerichtet) auswertbar.
Angeregt durch Antons Lösungsvorschlag die Idee, dass es eventuell möglich ist den xml-Text direkt an das Webbrowserobjekt zu übertragen. Entsprechend dem obigen Beispiel "Webbrowser1. = objXMLHTTP.Responsetext". Aber wo ....
Gruß, Arthur

Anzeige
Daten an Webbrowser-Objekt senden
02.04.2013 16:44:58
Anton
Hallo Arthur,

Sub b()
Dim objXMLHTTP As Object, strInhalt As String
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.Open "GET", "https://www.google.de", False
objXMLHTTP.send
If objXMLHTTP.Status = 200 Then
strInhalt = objXMLHTTP.Responsetext
With Me.WebBrowser1
.Navigate "about:blank"
Do
DoEvents
Loop Until .Busy = False
.Document.body.innerhtml = strInhalt 'oder
'.Document.body.innerhtml = Replace(strInhalt, "alert", "arthur=")
End With
End If
Set objXMLHTTP = Nothing
End Sub

mfg Anton

*tata* - Das ist es ....
03.04.2013 10:50:06
Arthur
Hallo Anton.
Das ist es. Der kleine Umweg funktioniert. Vielen Dank für die Hilfestellung.
Gruß, Arthur.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige