В VBA объект MSXML2.XMLHTTP не всегда хорошо загружает JavaScript - PullRequest
0 голосов
/ 23 декабря 2018

Я пытаюсь исправить старый макрос, работающий с функцией GetData, которая извлекает всю страницу в строке ответа.(Не могу дать реальный URL здесь)

Function getDataFor(tva As String) As String

  ' Early binding, set Tools - Reference - Microsoft XML,v6.0

  Dim oDOM As New MSXML2.DOMDocument30
  Dim oNodeList As IXMLDOMNodeList
  Dim oReq As MSXML2.XMLHTTP
  Set oReq = New MSXML2.XMLHTTP

  oReq.Open "GET", "https://xxxxxxx.asp?name=" & tva, False
  oReq.send

  While oReq.readyState <> 4

  Wend

  Dim response As String
  Dim name As String
  Dim hasLoginBelspo As String
  response = oReq.responseText

  Dim token1 As Long
  Dim token2 As Long
  token1 = InStr(response, "company.name=")
  token2 = InStr(response, "company.address=")
  On Error GoTo Proceed
  name = Mid(response, token1 + 14, token2 - (token1 + 16))

  On Error GoTo 0
  token1 = InStr(response, "parent.SetLoginInfo")
  hasLoginBelspo = Replace(Mid(response, token1 + 28, 5), ",", "")
  GoTo Proceed2
Proceed:
  name = ""
  hasLoginBelspo = ""
Proceed2:
  getDataFor = name & "," & hasLoginBelspo

End Function

Соответствующая страница загружена и необходимые данные записаны между тегами javascript:

Вот копия того, что я могу найти висходная страница, когда я вставляю URL в браузер.

<script language="javascript">

var company=new Object();company.number="xxx";company.name="xxx";company.address="xxx";company.zip="xxx";company.city="xxx";parent.SetLoginInfo(company,false,true,"xxx","");

</script>

Все данные, замененные на xxx, - это то, что мне нужно.В браузере я получаю его, но с макросом иногда эти данные xxx пусты.Это должно быть потому, что библиотека, используемая для загрузки javascript, может быть не самой подходящей (MSXML2).

У вас есть представление о том, что мне нужно изменить, или какую библиотеку я должен использовать, чтобы быть увереннымданные javascript будут перехвачены?

Большое спасибо

...