运行时错误 91 和 1004 VBA
Runtime error 91 and 1004 VBA
我是 VBA 的新手。我一直在尝试将值“3.2500”放入单元格 B1。到目前为止,我有时会收到运行时错误 1004 和错误 91 - 对象变量或块变量未设置。是什么原因造成的?这是一本干净的工作簿。
Sub extract()
Dim myIE As Object
Dim myIEDoc As Object
Dim element As IHTMLElement
Set myIE = CreateObject("InternetExplorer.Application")
myIE.Visible = False
myIE.navigate "https://zonasegura1.bn.com.pe/TipoCambio/"
While myIE.Busy
DoEvents
Wend
Set myIEDoc = myIE.document
Range("B1") = myIEDoc.getElementsByClassName("movimiento")(0).getElementsByClassName("l2 valor")(0)
End Sub
您的问题是:
Range("B1") = myIEDoc.getElementsByClassName("movimiento")(0).getElementsByClassName("l2 valor")(0)
有歧义。您需要完全指定发生了什么。 "Range this or that" 如果你不说他们进入哪个工作簿或哪个工作表,则没有意义。
getElementsByID("movimiento") 正在考虑 class="movimiento bg" 一个匹配项,但没有匹配的 child 元素,因此您正在尝试从中获取 .innerText没有。您需要 class 名称的第二个匹配项,然后找到 child 或直接查找 class="l2 valor",因为您想要的是文档中的第三个。
'option 1
Range("B1") = myIEDoc.getElementsByClassName("movimiento")(1).getElementsByClassName("l2 valor")(0).innertext
'option 2
Range("B1") = myIEDoc.getElementsByClassName("l2 valor")(2).innertext
请记住,元素集合的索引号是 zero-based,因此要获得第三个元素,您需要索引号 (2)。
我是 VBA 的新手。我一直在尝试将值“3.2500”放入单元格 B1。到目前为止,我有时会收到运行时错误 1004 和错误 91 - 对象变量或块变量未设置。是什么原因造成的?这是一本干净的工作簿。
Sub extract()
Dim myIE As Object
Dim myIEDoc As Object
Dim element As IHTMLElement
Set myIE = CreateObject("InternetExplorer.Application")
myIE.Visible = False
myIE.navigate "https://zonasegura1.bn.com.pe/TipoCambio/"
While myIE.Busy
DoEvents
Wend
Set myIEDoc = myIE.document
Range("B1") = myIEDoc.getElementsByClassName("movimiento")(0).getElementsByClassName("l2 valor")(0)
End Sub
您的问题是:
Range("B1") = myIEDoc.getElementsByClassName("movimiento")(0).getElementsByClassName("l2 valor")(0)
有歧义。您需要完全指定发生了什么。 "Range this or that" 如果你不说他们进入哪个工作簿或哪个工作表,则没有意义。
getElementsByID("movimiento") 正在考虑 class="movimiento bg" 一个匹配项,但没有匹配的 child 元素,因此您正在尝试从中获取 .innerText没有。您需要 class 名称的第二个匹配项,然后找到 child 或直接查找 class="l2 valor",因为您想要的是文档中的第三个。
'option 1
Range("B1") = myIEDoc.getElementsByClassName("movimiento")(1).getElementsByClassName("l2 valor")(0).innertext
'option 2
Range("B1") = myIEDoc.getElementsByClassName("l2 valor")(2).innertext
请记住,元素集合的索引号是 zero-based,因此要获得第三个元素,您需要索引号 (2)。