Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Durch javascripts erstellte webinhalte importieren
#1
Hallo

ich möchte wie der Titel bereits sagt, webinhalte die durch Javascripts generiert werden in excel durch vba einfügen

ich habe auf 
http://stackoverflow.com/questions/21039...-a-webpage

Code:
Sub Dow_HistoricalData()

   Dim xmlHttp As Object
   Dim TR_col As Object, TR As Object
   Dim TD_col As Object, TD As Object
   Dim row As Long, col As Long

   Set xmlHttp = CreateObject("MSXML2.XMLHTTP.6.0")
   xmlHttp.Open "GET", "http://www.investing.com/indices/us-30-historical-data", False
   xmlHttp.setRequestHeader "Content-Type", "text/xml"
   xmlHttp.send

   Dim html As Object
   Set html = CreateObject("htmlfile")
   html.body.innerHTML = xmlHttp.ResponseText

   Dim tbl As Object
   Set tbl = html.getElementById("curr_table")

   row = 1
   col = 1

   Set TR_col = html.getelementsbytagname("TR")
   For Each TR In TR_col
       Set TD_col = TR.getelementsbytagname("TD")
       For Each TD In TD_col
           Cells(row, col) = TD.innerText
           col = col + 1
       Next
       col = 1
       row = row + 1
   Next
End Sub

ich kriege jedoch den fehler Laufzeitfehler 70 beim ausführen.


habe ich den code an der richtigen stelle eingefügt oder funktioniert der code einfach nicht?

danke für jegliche hilfe im vorraus


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#2

Hallo,

ein erster Test bestätigte nach ".send" die Antwort der Webseite: "Zugriffsverletzung"

Die Vermutung ist, dass die Webseite den Zugriff eines Scripts erkennt und "blockt". Da ein Öffnen per Hand (Firefox) wäre zu überlegen, ob das vba-Script den IE steuern sollte.

mfg

(keine weiteren Tests meinerseits)

(NAchtrag: im Header steht: <meta name="robots" content="NOODP">, die html - Spezialisten dürfen wissen, ob das den Zugriff blockt)
Antworten Top
#3
Hallo,

wenn ich dich richtig verstanden habe, dürfte das mit Power Query leicht zu machen sein. Ab xl2016 musst Du nicht mal mehr ein zusätzliches Addin laden.

Die Daten sind immer aktuell und du benötigst kein VBA.
Gruß Jonas
Antworten Top
#4
Hallo,

eine sehr oberflächliche Durchsicht des Quellcodes läßt mich vermuten, dass auf der Seite viele Überwachungsfunktionen eingebaut sind.

Wen es interessiert:

mfg


Angehängte Dateien
.txt   Rjinxil Web auslesen.txt (Größe: 271,3 KB / Downloads: 4)
Antworten Top
#5
hallo

vielen dank für die Antwort

der link in dem code war der original link von der website.

ich will eine andere Website importieren und wollte erstmal prüfen ob das überhaupt funktioniert.

http://eu-bns.ncsoft.com/ingame/bs/chara...c=(+inhalt von a1-100)
zb.
http://eu-bns.ncsoft.com/ingame/bs/chara...?c=rjinxil
diese markierten werte im bild

zwar bekomme ich keine Fehlermeldung zurück mit dem code jedoch wird auch nichts importiert, was (glaube ich) daran liegt, dass der Code eine TABELLE nach ihrem namen importiert 
Code:
  Set tbl = html.getElementById("curr_table")

jedoch sind meine vba Kenntnisse gleich 0, und ich habe auch kein Ansatz wie ich den code so verändern kann, dass er nicht die Tabelle sondern die benötigten werte importiert.

mein alter code ist:
Code:
=TRANSPOSE(IMPORTXML("http://eu-bns.ncsoft.com/ingame/bs/character/profile?c="&$A1,"(//dd[@class='desc']//li)[1] | (//div[@class='name'])[1] | (//div[@class='name'])[3] | (//div[@class='name'])[4] | (//div[@class='name'])[5] | (//div[@class='name'])[7] | (//span[@class='stat-point'])[1]"))
dieser funktioniert jedoch nicht, da die werte von der Seite jetzt mit einem Javascript geladen werden

kann ich diese pfade einfach irgendwie in der vba code übernehmen?

vielen dank im vorraus

Rjinxil


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#6
(06.05.2017, 17:11)Jonas0806 schrieb: Hallo,

wenn ich dich richtig verstanden habe, dürfte das mit Power Query leicht zu machen sein. Ab xl2016 musst Du nicht mal mehr ein zusätzliches Addin laden.

Die Daten sind immer aktuell und du benötigst kein VBA.

hallo

wie genau nutze ich power query. oder welche formel nutze ich in 2016?
Antworten Top
#7
Moin,
aus meiner Sicht haut das mit Power Query nicht hin. PQ kann aus Webseiten (nur) HTML-Tabellen ansprechen und auslesen. Und bei einer (zugegebenermaßen oberflächlichen) Durchsicht des Codes der Seite habe ich kein TABLE-Tag gefunden. Vielleicht gibt es ja noch eine andere Seite, wo nicht die (schrille) Optik sondern die klassische Information im Vordergrund steht und die in HTML(5) erstellt wurde.
Beste Grüße
  Günther

Excel-ist-sexy.de
  …schau doch mal rein!
Der Sicherheit meiner Daten wegen lade ich keine *.xlsm bzw. *.xlsb- Files mehr herunter! -> So geht's ohne!
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste