2017-11-08 1 views
1

ボタンを複数回クリックしてページを完全に読み込もうとしています。 Webページには、次のページの代わりにSHOW MOREボタンが含まれているので、ボタンの背後にあるHTMLコードでは同じままです。ウェブページのボタンをExcelで複数回クリックする

次のExcel-VBAコードを使用してそのボタンを押しています。それは実際にそのボタンをクリックしましたが、次の結果を表示する代わりに、同じ結果を繰り返し表示します。

私はそれを正しくする方法を親切に教えてください。前もって感謝します!

**' VARIABLE DECLARATION 
    Dim IE As Object 
    Dim county As String 
    Dim htmlDoc As Object 

    ' CREATING OBJECT 
    Set IE = CreateObject("internetexplorer.application") 

    ' WEBPAGE NAVIGATION 
    With IE 
    .navigate ("http://www.physiofirst.org.uk/find-physio/search-physio.html") 
    .Visible = True 
    End With 

    ' WAITING FOR WEBPAGE TO LOAD 
    Do 
    DoEvents 
    Loop Until IE.readystate = 4 

    ' SEARCHING ALL THE THE INDIVIDUAL STATE PHYSICIANS 
    Set htmlDoc = IE.document 
    Set searchbarvalue = htmlDoc.getelementsbyclassname("form-control mod-text-display") 
    i = 0 
    For Each classSearch In searchbarvalue 
     searchbarvalue(i).Value = "BRISTOL" 
    Next classSearch 
    While IE.busy 
     DoEvents 
    Wend 

    Set buttonclick = htmlDoc.getelementsbyclassname("btn btn-search") 
    i = 0 
    For Each buttonsearch In buttonclick 
     buttonclick(i).Click 
    Next buttonsearch 
    While IE.busy 
     DoEvents 
    Wend 
    Do 
    htmlDoc.getelementbyid("load-more-practice").Click 
    While IE.busy 
    DoEvents 
    Wend 
    Loop Until htmlDoc.getelementbyid("load-more-practice").Click = True 
End Sub** 
+0

データページは2から始まり、完全に読み込まれると1になるため、データページ= "1"になるまで実行する必要があります。 'Show More' – danieltakeshi

答えて

0

すべてがよりクリックされた表示と、それは、2から始まり、完全にロードされると1に行くので、データ・ページは、=「1」になるまで行い、このコードを試してみてください。

Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Sub test() 
Dim IE As Object 
Dim county As String 
Dim htmlDoc As Object 
Dim sURL As String 

' CREATING OBJECT 
Set IE = CreateObject("internetexplorer.application") 

sURL = "http://www.physiofirst.org.uk/find-physio/search-physio.html" 
' WEBPAGE NAVIGATION 
With IE 
.navigate (sURL) 
.Visible = True 
End With 

WaitIE IE, 2000 

' SEARCHING ALL THE THE INDIVIDUAL STATE PHYSICIANS 
Set htmlDoc = IE.document 
Set searchbarvalue = htmlDoc.getElementsByClassName("form-control mod-text-display") 
i = 0 
For Each classSearch In searchbarvalue 
    searchbarvalue(i).Value = "BRISTOL" 
Next classSearch 

WaitIE IE, 1000 

Set buttonclick = htmlDoc.getElementsByClassName("btn btn-search") 

buttonclick(0).Click 
WaitIE IE, 1000 
Set ShowMore = htmlDoc.getElementById("load-more-practice") 

Do 
ShowMore.Click 
WaitIE IE, 2000 
Loop Until ShowMore.getAttribute("data-page") = 1 

'IE.Quit 
'Set IE = Nothing 
End Sub 

Sub WaitIE(IE As Object, Optional time As Long = 250) 
'Code from: https://stackoverflow.com/questions/33808000/run-time-error-91-object-variable-or-with-block-variable-not-set 
Dim i As Long 
Do 
    Sleep time 
    Debug.Print CStr(i) & vbTab & "Ready: " & CStr(IE.readyState = 4) & _ 
       vbCrLf & vbTab & "Busy: " & CStr(IE.Busy) 
    i = i + 1 
Loop Until IE.readyState = 4 Or Not IE.Busy 
End Sub 
+1

ダニエル・タケシがあなたの意見を得ました。プログラムはうまくいった。 (Y) –

+0

ShowMore = htmlDoc.getElementById( "load-more-practice") すべてが完璧ですが、時にはこの行にvbaがぶつかり、デバッグを要求し、時にはうまくいったことがあります。ここで何が間違っているのか教えてください。 –

+0

あなたは完全にロードしていないので、「WaitIE IE、2000」を「WaitIE IE、5000」に読み込む時間を与えてください。それが続くと、クリック間の待機時間が長くなります。 – danieltakeshi

関連する問題