3

我正在尝试修复一个使用函数 GetData 的旧宏,该函数在响应字符串中检索整个页面。(这里不能给出真实的网址)

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 数据?

非常感谢

4

0 回答 0