我正在尝试在网页上运行HTML文档上的宏。代码似乎没问题,但我甚至无法确定它,因为Internet Explorer在它结束之前一直崩溃。你可以在这里看到我的代码的第一部分(更大的样本在here上)。
For Each Element In IEDoc.querySelectorAll("td[width='100'][class='ListMainCent'][rowSpan='1'][colSpan='1']") '
Element.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.className = "Bim" ' instead of ID
Next
For Each Element In IEDoc.getElementsByClassName("SectionHead")
If Element.innerHTML = "Part Usage" Then
'MsgBox TypeName(Element.ParentNode.ParentNode.ParentNode)' HTMLTable
Element.ParentNode.ParentNode.ParentNode.ID = "Stop"
End If
Next
第一个弱点似乎只是在第一个For循环结束时,就在它通过这一步之后。
正在显示此,当然代码无法继续运行,因为我仍在从HTML网页文档中提取数据。
有关如何防止此次崩溃的任何想法?
到目前为止我所做的是在循环中调用以下一些函数,但它没有任何区别。
Sub Timers()
Dim PauseTime, Start, Finish, TotalTime
PauseTime = 0.2 ' Set duration.
Start = Timer ' Set start time.
Do While Timer < Start + PauseTime
DoEvents ' Yield to other processes.
Loop
'Finish = Timer ' Set end time.
'TotalTime = Finish - Start ' Calculate total time.
'MsgBox "Paused for " & TotalTime & " seconds"
End Sub
Public Sub Warte_mal()
'Workaround to get the overview page in PuMA opened
Dim WshShell
Set WshShell = CreateObject("WScript.Shell")
WshShell.popup "Overview page will be opened", 1, "Have some patience...."
End Sub
Sub WaitIE(ie As InternetExplorer)
Do Until ie.readyState = READYSTATE_COMPLETE
DoEvents
Loop
End Sub
答案 0 :(得分:0)
解决方案:我找到了一种避免Internet Explorer崩溃的方法,但我不完全理解为什么它以这种方式工作而不是另一种方式。
我所做的是用For迭代循环替换第一个 For Each 循环。
longueur = IEDoc.querySelectorAll("td[width='100'][class='ListMainCent'][rowSpan='1'][colSpan='1']").length - 1
For i = 0 To longueur
IEDoc.querySelectorAll("td[width='100'][class='ListMainCent'][rowSpan='1'][colSpan='1']")(i).ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.ParentNode.className = "Bim"
Next i
我可以理解,寻找元素的第7个父级可能是一个繁重的操作,但我仍然不明白为什么它以这种方式工作而不是 For Each 循环。