Hi Zusammen,
versuche Daten aus einer Java Script Website zu laden.
Habe dazu dieses Macro gefunden.
Sub LadenTest1()
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;https://musterseite.musterstadt.com/receipts?cond%5B1%5D%5Bcol_key%5D=order_header_id&cond%5B1%5D%5Border_header_id%5D=01372361&cond%5B1%5D%5Border_header_id_op%5D=eq&search_mode=advanced" _
, Destination:=Range("$A$1"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
Habe das Marko erstellt mit der Webabfrage im Excel, dabei kamen so 5 Script Fehlermeldungen die ich alle mit "nicht mehr ausführen" wegklicken konnte. Danach konnte ich die Daten laden.
Nun zum Problem:
Heute ging es nicht mehr, dies kam als Fehlermeldung:
Note: Since your browser does not support JavaScript, you must press the Resume button once to proceed.
Unten bei dem Code kam die Fehlermeldung "forbidden"...
Es geht erst wenn ich die einfache Webabfrage bearbeite in den Browser von Excel (glaub ist ein alter IE?) gehe und dort die Script Fehlermeldungen alle weg klicke und dann wird die Seite geladen, ich mach den Browser zu und beide Marcos gehen dann.
Brauch die Website cookies oder ein token? Wie kann man das im Quelltext der Seite sehen was die Seite für die Anmeldung benötigt. Ich habe eine Zeile gefunden die wie folgt aussieht:
<title>Empfangen</title>
<link href='/assets/favicon-cd941e7bee11ad2e862dc6b9b22bd4731c50c6c90339ce35d27cf01571ce69c2.ico' rel='shortcut icon'>
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="WfrZaKKkNDZHkZmad1/GO/qe2oQghoPKkCWTEcD7GD0P1evo8OHgByyDajZg821gxSjc8kb470+AM4P9qXrTtw==" />
<!--[if lt IE 9]>
<script src="/assets/html5-e3b
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", "https://musterseite.musterstadt.com/receipts?cond%5B1%5D%5Bcol_key%5D=order_header_id&cond%5B1%5D%5Border_header_id%5D=1378801&cond%5B1%5D%5Border_header_id_op%5D=eq&search_mode=advanced", 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
Wie kann man das Makro so umbauen dass man die Daten laden kann ohne ständig die Webabfrage manuell bearbeiten zu müssen?
Danke & Gruß
Silent
|