使用VBA将特定web数据导入excel
我非常熟悉VBA编码场景(web脚本更适合我),但我需要创建一个基于excel的程序,将数据从基于intranet的web应用程序导入电子表格。这是我想要建立的要点。。。 在电子表格中,用户将输入以下信息:用户名、密码、客户帐号列表和日期范围。然后,用户将单击“命令按钮”,以执行以下操作:使用VBA将特定web数据导入excel,vba,excel,web-scraping,Vba,Excel,Web Scraping,我非常熟悉VBA编码场景(web脚本更适合我),但我需要创建一个基于excel的程序,将数据从基于intranet的web应用程序导入电子表格。这是我想要建立的要点。。。 在电子表格中,用户将输入以下信息:用户名、密码、客户帐号列表和日期范围。然后,用户将单击“命令按钮”,以执行以下操作: 打开基于web的程序,登录(基于电子表格中输入的登录名/密码),然后导航到帐户搜索屏幕 在搜索字段中输入第一个客户帐号,然后单击“搜索”按钮导航到特定的客户帐号 导航到“搜索活动”屏幕,输入日期范围并单击“搜
Private Sub CommandButton1_Click()
' open IE, navigate to the desired page and loop until fully loaded
Set IE = New InternetExplorerMedium
my_url = "https://customerinfo/pages/login.jsp"
my_url2 = "https://customerinfo/pages/searchCustomer.jsp"
my_url3 = "https://customerinfo/pages/searchAccountActivity.jsp"
With IE
.Visible = True
.navigate my_url
Do Until Not .Busy And .readyState = 4
DoEvents
Loop
End With
' Input the userid and password
IE.document.getElementById("userId").Value = [B2]
IE.document.getElementById("password").Value = [B3]
' Click the "Login" button
IE.document.getElementById("action").Click
Do Until Not IE.Busy And IE.readyState = 4
DoEvents
Loop
' Navigate to Search screen
With IE
.navigate my_url2
Do Until Not .Busy And .readyState = 4
DoEvents
Loop
End With
' Input the account number & click search
IE.document.getElementById("accountNumber").Value = [B5]
IE.document.getElementById("action").Click
Do Until Not IE.Busy And IE.readyState = 4
DoEvents
Loop
With IE
.navigate my_url3
Do Until Not .Busy And .readyState = 4
DoEvents
Loop
End With
'Input search criteria
IE.document.getElementById("store").Value = [C7]
IE.document.getElementById("dateFromMonth").Value = [C10]
IE.document.getElementById("dateFromDay").Value = [B11]
IE.document.getElementById("dateFromYear").Value = [B12]
IE.document.getElementById("timeFromHour").Value = [B20]
IE.document.getElementById("timeFromMinute").Value = [B21]
IE.document.getElementById("dateToMonth").Value = [C15]
IE.document.getElementById("dateToDay").Value = [B16]
IE.document.getElementById("dateToYear").Value = [B17]
IE.document.getElementById("timeToHour").Value = [B24]
IE.document.getElementById("timeToMinute").Value = [B25]
IE.document.getElementById("action").Click
Do Until Not IE.Busy And IE.readyState = 4
DoEvents
Loop
'Pulls data from activity search
Dim TDelements As IHTMLElementCollection
Dim TDelement As HTMLTableCell
Dim r As Long, i As Long
Dim e As Object
Application.Wait Now + TimeValue("00:00:05")
Set TDelements = IE.document.getElementsByTagName("tr")
r = 0
For i = 1 To 1
Application.Wait Now + TimeValue("00:00:03")
For Each TDelement In TDelements
If TDelement.className = "searchActivityResultsOldContent" Then
Sheet1.Range("E1").Offset(r, 0).Value = TDelement.ChildNodes(8).innerText
r = r + 1
ElseIf TDelement.className = "searchActivityResultsNewContent" Then
Sheet1.Range("E1").Offset(r, 0).Value = TDelement.ChildNodes(8).innerText
r = r + 1
End If
Next
Application.Wait Now + TimeValue("00:00:02")
Set elems = IE.document.getElementsByTagName("input")
For Each e In elems
If e.Value = "Next Results" Then
e.Click
i = 0
Exit For
End If
Next e
Next i
Do Until Not IE.Busy And IE.readyState = 4
DoEvents
Loop
IE.Quit
End Sub
那么,单击“下一步…”元素后发生了什么?让我描述一下我遇到的一个问题。假设代码流如下所示:
DispHTMLElementCollection
集合,由.document.getElementsByTagName()
等检索DispHTMLElementCollection
集合的属性href
读取下一页URL
在我看来,最有效的方法是使用XHR、like和。请缩小您的帖子范围,将代码/文本限制在关键部分,并澄清您的问题。谢谢和问候,可能重复