ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何针对ASP网页调用XMLHTTP查询数据?

如何针对ASP网页调用XMLHTTP查询数据?

作者:绿色风 分类: 时间:2022-08-17 浏览:149
楼主
水星钓鱼
Q:如何针对ASP网页调用XMLHTTP查询数据?
A:以下是其中一个范例:
  1. Sub xyf()
  2.     Dim oXmlHttp As Object, ohtml As Object, obj1, obj2, obj3
  3.     Dim sVS As String, sEV As String, sstr As String
  4.     Dim iPage As Integer, TPage As Integer
  5.     Set oXmlHttp = CreateObject("msxml2.xmlhttp")
  6.     With oXmlHttp
  7.         .Open "GET", "http://www.drugfuture.com/cndrug/search.aspx?SearchTerm=" & xyf_Escape("阿莫西林") & "&DataFieldSelected=auto", False
  8.         .send
  9.         Set ohtml = CreateObject("htmlfile")
  10.         ohtml.body.innerhtml = .responsetext
  11. '        ohtml.body.innerhtml = VBA.StrConv(.responseBody, vbUnicode)
  12.         sVS = ohtml.getElementById("__VIEWSTATE").Value
  13.         sEV = ohtml.getElementById("__EVENTVALIDATION").Value
  14.         TPage = ohtml.getElementById("ResultNational").getElementsbytagname("span")(0).innertext
  15.         Set obj1 = ohtml.getElementById("GridViewNational")
  16.         Set obj2 = obj1.Rows
  17.         For i = 0 To obj2.Length - 2
  18.             Set obj3 = obj2(i).Cells
  19.                 For j = 0 To obj3.Length - 1
  20.                     Cells(k + 1, j + 1) = obj3(j).innertext
  21.                 Next
  22.                 k = k + 1
  23.         Next
  24.         For iPage = 2 To Round(TPage \ 30)
  25.         sstr = "__EVENTTARGET=GridViewNational&__EVENTARGUMENT=Page" & xyf_Escape("$" & iPage) & "&__LASTFOCUS=&__VIEWSTATE=" & xyf_EncodeURI(sVS) & "&__EVENTVALIDATION=" & xyf_EncodeURI(sEV)
  26.         With oXmlHttp
  27.         .Open "POST", "http://www.drugfuture.com/cndrug/search.aspx?SearchTerm=" & xyf_Escape("阿莫西林") & "&DataFieldSelected=auto", False
  28.          .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
  29.         .send (sstr)
  30.         ohtml.body.innerhtml = .responsetext
  31.         sVS = ohtml.getElementById("__VIEWSTATE").Value
  32.         sEV = ohtml.getElementById("__EVENTVALIDATION").Value
  33. '        ohtml.body.innerhtml = VBA.StrConv(.responseBody, vbUnicode)
  34.         Set obj1 = ohtml.getElementById("GridViewNational")
  35.         Set obj2 = obj1.Rows
  36.         For i = 1 To obj2.Length - 2
  37.             Set obj3 = obj2(i).Cells
  38.                 For j = 0 To obj3.Length - 1
  39.                     Cells(k + 1, j + 1) = obj3(j).innertext
  40.                 Next
  41.                 k = k + 1
  42.         Next
  43.         End With
  44.         Next
  45.     End With
  46. End Sub
  47. Function xyf_EncodeURI(str)
  48.     Dim obj
  49.     Set obj = CreateObject("ScriptControl")
  50.     With obj
  51.         .Language = "JavaScript"
  52.          xyf_EncodeURI = .Eval("encodeURIComponent(""" & str & """)")
  53.     End With
  54.     Set obj = Nothing
  55. End Function
  56. Function xyf_Escape(str)
  57.     Dim obj
  58.     Set obj = CreateObject("ScriptControl")
  59.     With obj
  60.         .Language = "JavaScript"
  61.          xyf_Escape = .Eval("escape(""" & str & """)")
  62.     End With
  63.     Set obj = Nothing
  64. End Function

原帖链接
  1. http://www.exceltip.net/forum.php?mod=viewthread&tid=51275&fromuid=111



免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap