如何确保宏的所有部分都正常运行?

时间:2019-06-26 15:50:01

标签: html excel vba internet-explorer-8

我有这段代码,基本上应该从网站上依次单击几个按钮。

For Each Element In Ie.getElementsByTagName("a")
    If Element.innerText = "Advanced Search" Then
        'Debug.Print element.innerText
        '**element.Click**
        Exit For
    Else
    End If
Next Element

Set objShell2 = CreateObject("Shell.Application")
IE_count = objShell2.Windows.Count

For X = 0 To (IE_count - 1)
    On Error Resume Next
    my_url = objShell2.Windows(X).Document.Location
    my_title = objShell2.Windows(X).Document.Title
    MsgBox ("The title of this page is: " & my_title)


    If my_title Like "Client List Management" & "*" Then
        Set ie2 = objShell2.Windows(X).Document
        my_title3 = ie2.Title
        MsgBox ("The title of Client List Management is: " & my_title3)
        Exit For
    Else
    End If

Next

For Each Element In ie2.getElementsByTagName("a")
    If Element.innerText = "Accounts" Then
        'Debug.Print element.innerText
        '**element.Click**
        Exit For
    Else
    End If
Next

For Each Element In ie2.getElementsByTagName("a")
  If Element.innerText = "SEARCH" Then
        'Debug.Print element.innerText
        '**element.Click**
        Exit For
    Else

    End If
Next

For Each Element In ie2.getElementsByTagName("a")
    If Element.innerText = "BATCH EXPORT" Then
        'Debug.Print element.innerText
        '**element.Click**
        Exit For
    Else
    End If
Next

问题是,当我运行整个宏时,仅单击了第一个按钮(按钮“高级搜索”),而在单击“高级搜索”按钮后应单击的其他按钮都没有反应。

但是,当我尝试调试代码并进入程序的每一步时,都会单击应单击的每个按钮。首次亮相时,一切正常。唯一的问题在于程序实际上自己运行时。

您知道如何解决此问题吗?

谢谢:)

1 个答案:

答案 0 :(得分:2)

如果计时是一个问题,那么您可以等待Internet Explorer不忙并且readystate等于4。

尝试将While Ie.readyState <> 4 Or Ie.Busy: DoEvents: Wend放在可能正在加载页面的部分中。 (导航后,单击按钮等)。


如果所有人都说这还不够,那么您可以随时使用sleep API。

#If VBA7 And Win64 Then
    Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#Else
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

仅当您无法等待上面的工作时,我才会这样做。


就绪状态4 表示已发送请求,服务器已完成返回响应,浏览器已完成了响应内容的下载。

来自Microsofts Documentation

忙碌被描述为:

  

获取一个值,该值指示对象是从事导航还是下载操作。