Vba 无法从pgatour.com下载记分卡
我在这里搜索了整个站点,以改进我的简单代码,但在set allRowofdata行仍然有一个错误424,这是我从这里收集到的。我只是想把一张高尔夫记分卡载入我的excel表格。我很感激能得到的任何帮助 这是我的密码: 注意:根据下面的建议,我已将代码更改为下面的代码,但现在在set allRowOfData处出现类型不匹配错误Vba 无法从pgatour.com下载记分卡,vba,Vba,我在这里搜索了整个站点,以改进我的简单代码,但在set allRowofdata行仍然有一个错误424,这是我从这里收集到的。我只是想把一张高尔夫记分卡载入我的excel表格。我很感激能得到的任何帮助 这是我的密码: 注意:根据下面的建议,我已将代码更改为下面的代码,但现在在set allRowOfData处出现类型不匹配错误 Sub Trial() Dim IE As InternetExplorer Dim allRowOfData Dim document As Object Set
Sub Trial()
Dim IE As InternetExplorer
Dim allRowOfData
Dim document As Object
Set IE = New InternetExplorer
IE.Visible = False
IE.navigate "https://www.pgatour.com/players/player.32757.patton-kizzire.html/scorecards/r457"
Do Until IE.readyState = 4: DoEvents: Loop
Set allRowOfData = IE.document.getElementById("module-1510443455695-953403-17")
Dim myValue As String: myValue = allRowOfData.Cells().innerHTML
IE.Quit
Set IE = Nothing
Range("A1").Value = myValue
End Sub
我认为您已经在页面上加载页面元素之前设置了页面元素,因此“allRowOfData”仍然为空 考虑将其替换为:
Application.Wait Now + TimeSerial(0, 0, 1)
与:
或者(效率低下,但看不出任何不起作用的原因):
以上假设您对.getElementByID方法的使用是正确的。未经测试,写在手机上
编辑1:
看看是否要改变这个
Dim allRowOfData
对此
Dim allRowOfData As IHTMLElement
工作
在重新运行代码之前,在VBA编辑器中,单击“工具”>“引用”,并向Microsoft HTML对象库添加引用(向下滚动并勾选)
类型不匹配意味着我们给一个错误类型的变量赋值,所以让我们去掉隐式变量
由于我在移动设备上,我无法检查代码的HTML源代码。可能是您想要的特定元素是在页面初始加载之后创建的(在这种情况下,您可能需要使用上面低效的替代方法),或者您需要迭代IHTMlementCollection以获取信息。这一切都取决于页面的结构和加载行为。什么是
appIE
。。。。把它放在代码的最上面选项Explicit
。。。。。以大写/小写形式声明变量,如dim appIE
。。。。然后用小写字母键入所有代码,如set-appie=
。。。如果它没有变为appIE
那么你就犯了一个错误我已经按照你说的做了错误424仍然在那里你没有回答我的问题整行是从stackover这里的问答中复制的,作为从网站检索数据的一种方式--我不知道它的意义。我问什么是appIE。我看不到您的代码中定义了它。。。为什么在不知道代码的作用的情况下将一行复制到代码中?如果这是一个重新格式化硬盘的命令呢?谢谢你的回答,chillin。我听从了你的建议,至少改变了我的错误。现在我在Set allRowofdata行中得到一个错误“13-type mismatch”。好的,从代码中完全删除这一行:Dim document As Object。现在重新运行并检查是否仍有错误。
Dim allRowOfData
Dim allRowOfData As IHTMLElement