如何为多个标签做网页报废

我试图从网页中提取“href”链接到我的Excel表格。 我为一个值做同样的事情,但我无法循环相同。

下面是一个运行正常的值的代码:

Dim X As String X = ActiveCell.Value ' I have selected the cell "A1" before even starting the macro Set ElementCol = IE.document.getElementsByTagName("a") For Each link In ElementCol If link.innerHTML = Jesus Then ActiveCell.Offset(0, 1).Value = link.href ' I will have the value in the "B1" End If Next 

这里是截图的例子

现在,当我尝试循环的代码运行,但它给了我在所有单元格相同的值这是我试过的代码:

 Dim intRowCount As Integer Dim i As Integer Dim X As String X = ActiveCell.Value intRowCount = Range("A1").CurrentRegion.Rows.Count For i = 1 To intRowCount Set ElementCol = IE.document.getElementsByTagName("a") For Each link In ElementCol If link.innerHTML = X Then ActiveCell.Offset(0, 1).Value = link.href ActiveCell.Offset(1, 0).Select End If Next Next i 

这里是截图Example2

我希望我以一种可以理解的方式来解释情况,请原谅我的任何错误。 另外图片中的链接是样本!

以下是工作过的重做代码:

 X = Range("A1").CurrentRegion.Rows.Count For i = 1 To X ActiveCell.Offset(1, 0).Select Dim Y As String Jesus = ActiveCell.Value Set ElementCol = IE.document.getElementsByTagName("a") For Each link In ElementCol If link.innerHTML = Y Then ActiveCell.Offset(0, 1).Value = link.href End If Next Next i 

你应该避免使用ActiveCell ,而只是简单地引用单元格。 你也创build了一个循环与i但没有提到这一点。

主要的问题是你在循环之外设置X的值,然后将链接与这个值相比较,每次迭代都会保持不变。

尝试以下操作:

 Dim eRow As Long Dim i As Long Dim ws as Worksheet Set ws = Thisworkbook.Sheets("SheetName") eRow = ws.Cells(ws.Rows.count, 1).End(xlUp).Row Set ElementCol = IE.document.getElementsByTagName("a") For i = 1 To eRow For Each link In ElementCol If link.innerHTML = ws.Cells(i, 1).Value Then ws.Cells(i, 2).Value = link.href End If Next Next i