我编写一些打开ie.navigate的vba scritp,并从网页获取一些值为excell值。
但有时该网址并未在网页上正确加载且未填充值。因此,当getelement尝试获取任何valume时,我的循环发生致命错误并停止。
另一点是,想象一下所有页面都是加载的..但是对于这个标准,一些geElementID是empyt ...我可以做些什么来避免它。
我的代码在这里:
Sub Extract_One_Airport()
Dim IE As New InternetExplorer
Dim dtStart As Date
Datec = 0
CountRange = 1
For lSCtr = 0 To 5
Set P1 = Sheets("Inicio").Range("A9") 'Primeira p do link
Set P2 = Sheets("Inicio").Range("A10") 'Origem
link = P1 & P2
IE.navigate link
IE.Visible = True
Application.Wait (Now() + TimeValue("00:00:45")) ' For internal page refresh or loading
Dim doc As HTMLDocument
Set doc = IE.document
Dim dd As Variant
dd = doc.getElementsByClassName("valuefortoday")(0).innerText
Sheets("Resul").Range("C" & CountRange).Value = dd
Count = Count + 1
CountRange = CountRange + 1
Next
End Sub
正如我所说..有时 getElementsByClassName(“valuefortoday”)(0).innerText 空洞,导致网站当天没有任何信息...我怎样才能避免空值和跳过它第二天?
答案 0 :(得分:0)
这将剪贴板写入StdOut。由于您只能在没有安全对话框的Intranet区域中使用IE的剪贴板,因此我导航到本地文件并等待它完成加载。
你也可以用事件来做。
Sub Clip
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = 0
ie.Navigate2 FilterPath & "Filter.html"
Do
wscript.sleep 100
Loop until ie.document.readystate = "complete"
txt=ie.document.parentwindow.clipboardData.GetData("TEXT")
ie.quit
If IsNull(txt) = true then
outp.writeline "No text on clipboard"
else
outp.writeline txt
End If
End Sub
答案 1 :(得分:0)
您可以查看lenght
的{{1}}属性。如果没有这样的元素,那么长度将等于零。
valueForToday