VBA-从ASP页面检索数据
我最初创建了一个VBA宏,它将使用IE自动化在ASPX页面上单击特定的表单按钮。该页面有5个表单选项,您必须通过VBA-从ASP页面检索数据,vba,excel,automation,Vba,Excel,Automation,我最初创建了一个VBA宏,它将使用IE自动化在ASPX页面上单击特定的表单按钮。该页面有5个表单选项,您必须通过 组的下拉列表 位置的下拉列表 选择日期的图形日历 区域的列表框 生成报告按钮 我想从使用IE自动化转向更高效的方式。我看过其他文章,他们可以使用MSXML对象将数据拉回来。这是我能够从我读到的内容中构建出来的,但我不知道如何传递多个表单选项。这是一个特定于公司/内部的网站,因此很遗憾,我无法在外部发布链接示例 元素ID如下所示;数据部门、数据位置、计算日期、LBAREA、btnG
- 组的下拉列表
- 位置的下拉列表
- 选择日期的图形日历
- 区域的列表框
- 生成报告按钮
Public Sub XMLhttp_Search_Extract()
Dim URL As String
Dim XMLreq As Object
Dim POSTdata As String
Dim i As Integer
URL = "somewebURL.test.aspx"
POSTdata = "(" & Q("dlDivision") & ":" & Q("divisionNAMEHERE") & "," & Q("dlLocation") & ":" & Q("123 - Location") & ")"
Set XMLreq = CreateObject("MSXML2.XMLHTTP")
With XMLreq
.Open "POST", URL, False
.setRequestHeader "User-Agent", "Moilla/5.0 (Windows NT 5.1; rv:23.0) Gecko/20100101 Firefox/23.0"
.setRequestHeader "Referer", "somewebURL.test.aspx"
.setRequestHeader "Content-Type", "application/json; charset=utf-8"
.Send (POSTdata)
For i = 1 To Len(.responseText) Step 1023
MsgBox Mid(.responseText, i, i + 1023), _
Title:=i & " to " & Min(i + 1023 - 1, Len(.responseText)) & " of " & Len(.responseText)
Next i
End With
End Sub
Private Function Q(text As String) As String
Q = Chr(34) & text & Chr(34)
End Function
Private Function Min(n1 As Long, n2 As Long) As Long
Min = IIf(n1 < n2, n1, n2)
End Function
Public Sub-XMLhttp\u Search\u Extract()
将URL设置为字符串
Dim XMLreq作为对象
将POSTdata设置为字符串
作为整数的Dim i
URL=“somewebURL.test.aspx”
POSTdata=“(”&Q(“dlDivision”)和“&Q(“divisionNAMEHERE”)和“&Q(“dlLocation”)和“&Q(“123-Location”)和“)
设置XMLreq=CreateObject(“MSXML2.XMLHTTP”)
使用XMLreq
.打开“POST”,URL,False
.setRequestHeader“用户代理”、“Moilla/5.0(Windows NT 5.1;rv:23.0)Gecko/20100101 Firefox/23.0”
.setRequestHeader“Referer”、“somewebURL.test.aspx”
.setRequestHeader“内容类型”,“应用程序/json;字符集=utf-8”
.Send(POSTdata)
对于i=1到Len(.responseText)步骤1023
MsgBox Mid(.responseText,i,i+1023)_
标题:=i&“to”&Min(i+1023-1,Len(.responseText))和“of”&Len(.responseText)
接下来我
以
端接头
私有函数Q(文本作为字符串)作为字符串
Q=Chr(34)&文本和Chr(34)
端函数
私有函数最小值(n1为长,n2为长)为长
最小值=IIf(n1
确定要发送JSON吗?通常,您发送application/x-www-form-urlencoded
表单数据,然后接收JSON。请尝试并显示站点的HTML代码。请参见-->此处似乎有一个输入错误:“Moilla”。应该是“Mozilla”。在此基础上,我会检查该标题的其余部分。