这是一个很长的解释,如果您迷路了,我深表歉意。 我正在做一个代码,去网站上进行搜索,然后我需要的代码是遍历(a)标记中的所有href并打开每个单独的代码。在每个打开的href上,我要在该工作表上打印从该href打开的表格。我设法编写了将信息打印到工作表上的代码(通过分别从href导航到url)。我遇到的问题是,我不知道如何遍历主网站上的所有href。如果打开一个href并且我已将信息打印到工作表上之后,也有可能关闭该选项卡,因为我通常通常必须总共经历400-500 href。不幸的是,由于无法正常工作,我无法共享该网站,但我会提供所有必要的信息。
我还希望将所有信息打印到一个工作表上。我将提供自己的代码:
我需要的是在主代码中,在那里我导航到网站,然后逐一浏览
所以我想要实现的是能够导航到所有href并执行我的代码以将信息打印到工作表上。另外,如果可能,在打开每个href并打印信息之后,也可以关闭该标签,以使其不会保持打开状态。
感谢您的帮助。再次道歉,如果这很简单,但我对VBA还是陌生的,但发现它非常有趣。
我已经编写了循环并打开所有href的代码。
Dim ie As New SHDocVw.InternetExplorer
导航到网站的代码
Dim HTMLDOC As HTMLDocument
Dim HTMLinput As MSHTML.IHTMLElement
Dim HTMLTables As MSHTML.IHTMLElementCollection
Application.ScreenUpdating = True
Application.DisplayAlerts = True
ie.Visible = True
ie.Navigate "website"
Do While ie.ReadyState <> READYSTATE_COMPLETE
Loop
Set HTMLDOC = ie.Document
Set HTMLinput = HTMLDOC.getElementById("SearchId")
HTMLinput.Value = str ' string with information taken from worksheet
Set HTMLinput = HTMLDOC.getElementById("search")
我搜索所需的信息
HTMLinput.Click
Set HTMLDOC = ie.Document
ProcessHTMLPage HTMLDOC
我调用将表格打印到工作表上的代码
以下是将所有信息打印到工作表的代码
Sub ProcessHTMLPage(HTMLPage As MSHTML.HTMLDocument)
Dim HTMLTable As MSHTML.IHTMLElement
Dim HTMLTables As MSHTML.IHTMLElementCollection
Dim HTMLRow As MSHTML.IHTMLElement
Dim HTMLCell As MSHTML.IHTMLElement
Set HTMLTables = HTMLPage.getElementsByClassName("data-grid")
Dim RowNum As Long, ColNum As Integer
For Each HTMLTable In HTMLTables
Dim ws As Worksheet
With ThisWorkbook
Set ws = .Sheets.Add(After:=.Sheets(.Sheets.Count))
ws.Name = "Sheet2"
End With
RowNum = 1
For Each HTMLRow In HTMLTable.getElementsByTagName("tr")
ColNum = 1
For Each HTMLCell In HTMLRow.getElementsByTagName("td")
Cells(RowNum, ColNum) = HTMLCell.innerText
ColNum = ColNum + 1
Next HTMLCell
RowNum = RowNum + 1
Next HTMLRow
Next HTMLTable
End Sub
只需更新
因此,我设法使用以下代码将其打开:
For Each HTMLA In HTMLAs
HTMLA.getAttribute("target")
If HTMLA.getAttribute("target") = "_blank" Then
HTMLA.Click
End If
Next HTMLA
我的问题是现在如何能够专注于每个单独的href并执行提取信息的代码,然后关闭多余的标签。目前,唯一发生的是我打开了所有标签页。