Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
getelementsbyclassname Excel vba-重复调用时出错_Excel_Getelementsbyclassname_Vba - Fatal编程技术网

getelementsbyclassname Excel vba-重复调用时出错

getelementsbyclassname Excel vba-重复调用时出错,excel,getelementsbyclassname,vba,Excel,Getelementsbyclassname,Vba,早上好 我遇到了来自Excel的webscrape的问题,getelementsbyclassname无法对某些对象执行操作,引发了“对象不支持此属性或方法”错误 当我输入到getelementsbyclassname的对象本身是getelementsbyclassname方法的结果时,就会出现问题。我不知道为什么,特别是当我在一个更大的对象上操作时可以得到类名 下面是一段代码摘录 ''''Boring Variables Declaration I've cut out'''' 'Initi

早上好

我遇到了来自Excel的webscrape的问题,getelementsbyclassname无法对某些对象执行操作,引发了“对象不支持此属性或方法”错误

当我输入到getelementsbyclassname的对象本身是getelementsbyclassname方法的结果时,就会出现问题。我不知道为什么,特别是当我在一个更大的对象上操作时可以得到类名

下面是一段代码摘录

''''Boring Variables Declaration I've cut out''''

'Initialise IE
Dim IEApp As New InternetExplorer 
Set IEApp = New InternetExplorer 
IEApp.Visible = True 'JB

'Open page and wait for page to load
  IEApp.navigate ("http://www.anicewebsite.com")
  Do Until IEApp.readyState = READYSTATE_COMPLETE And IEApp.Busy = False
    DoEvents
  Loop

Set HTMLdoc = IEApp.document
Set RefLocation = Sheets("INFO_DUMP").Range("LocationRefCell")
Set trElements = HTMLdoc.getElementsByClassName("basic-details")
For Each trElement In trElements
        'Select the LHS box and extract info
        Set tdElement = trElement.getElementsByClassName("tieredToggle")
        'write start/end locations
        '''''THIS NEXT LINE THROWS AN ERROR'''''
         Data_str = tdElement.getElementsByClassName("title").innerText
        '''''AS DOES'''''
        MyObject=tdElement.getElementsByClassName("title")
         RefLocation.Offset(1, 2).Value = Data_str 
Next 'close tr Loop         
但是,我可以通过

For Each trElement In trElements
        Set MyObject=trElement.getElementsByClassName("title")
Next 'close tr Loop
所以这个错误大概是关于tdElement(一个DispHtmleElement集合)的,我试图附加它的一个图像,但我缺乏声誉(请参阅本文末尾的链接)

非常感谢你的帮助

另外,该网页的结构大致上是一个2列的表格,我用“基本细节”分隔了其中的行。第一列是“分层切换”,然后我想要的项目是内部文本,例如“标题”。我需要使用tieredtoggle,因为每列中的对象都有重复的类名


您可以使用它来获取内部文本

Data_str = tdElement.getElementsByClassName("title")(0).innerText

您可以在元素所在的位置输入索引值,而不是(“title”)(0)。

tdElement
是一个集合,您必须像处理
treelements
一样循环它。哦,您是一个绝对的明星。完全正确-我需要循环访问对象的属性。不过,Thankyou看起来有点不雅观,有没有一种方法可以选择元素,然后不使用对象循环直接处理它们?如果GetElementsByCassName选择单个对象,我甚至必须这样做……如果您总是需要处理第一个元素,则可以使用以下符号:
tdElement(0)
(集合中的第一项),或者您可以使用getElementById()并提供第一个元素的id。更多关于