我正在尝试修复一个使用函数 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 数据?
非常感谢