我正在尝试从Internet Explorer读取值并将它们写入Excel工作表。为了保持代码整洁,我希望在另一个过程中使用某些代码部分。我正在努力引用IE.document。
这是我运作的一个简化示例(在此示例中已准备就绪状态):
Sub OpenAndWriteIn()
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Visible = True
.navigate "http://www.huffingtonpost.com"
End With
'Write in the Values to Sheet
ActiveSheet.Range("A1") = IE.document.getElementsByClassName("card__link")(0)
ActiveSheet.Range("B1") = IE.document.getElementsByClassName("card__link")(1)
MsgBox "Finished"
IE.Quit
End Sub
这是我想要的,但它不起作用:
Sub OpenIE()
Set IE = CreateObject("InternetExplorer.Application")
With IE
.navigate "http://www.huffingtonpost.com"
End With
'Based on the SearchedValue make a decision
WriteIn IE
IE.Quit
End Sub
Sub WriteIn(IE As Object)
ActiveSheet.Range("A1") = IE.document.getElementsByClassName("card__link")(0)
ActiveSheet.Range("B1") = IE.document.getElementsByClassName("card__link")(1)
MsgBox "Finished"
End Sub
答案 0 :(得分:0)
尝试使用以下定义之一
Sub WriteIn(IE) or Sub WriteIn(IE as variant)
答案 1 :(得分:0)
方法Sub WriteIn(IE As Object)
的定义使用ByRef
参数。 ByRef
是默认值,因此省略ByRef/ByVal
时会使用ByRef
。在这种情况下,方法IE
中的OpenIE()
变量声明必须与包含类型的参数声明匹配。只是类型必须一致,因为ByRef
参数引用了参数。
因此,您可以将问题解决为Object
或Variant
(但不得混合使用)或仅在函数ByVal
中使用Sub WriteIn(ByVal IE As Object)
。使用ByVal
时,参数包含参数的值。