2016-10-10 9 views
0

注:数日前にVBA Expressに同じ質問を掲載しましたが、この問題を解決できませんでした。二重の仕事をしたくない。VBA - 。IEでのクリックは数回の試行でしか動作しません

私はサイトに行って、onclickリファレンスでサウンドビートを再生しようとしています。サウンドビートを毎回自分のコードで再生するのに問題があります。それは私には奇妙なことですが、何度も再生されます。 getelementbyidを使用することはできません。なぜなら、いくつかのリンクを検索する予定であり、idが何であるかを事前に知ることができないからです。どのようにサウンドビートを毎回再生するためのアイデアですか?ありがとうございました。

Sub Encore() 

    Dim oBrowser As InternetExplorer  
    Dim sURL As String 

    sURL = "http://forvo.com"     

    Set oBrowser = New InternetExplorer 

    oBrowser.Silent = True 
    oBrowser.navigate sURL 
    oBrowser.Visible = True 

    Do While oBrowser.Busy: DoEvents: Loop 

    oBrowser.navigate "http://forvo.com/search/encore/fr" 
    Do While oBrowser.Busy: DoEvents: Loop 
    oBrowser.document.getElementsByClassName("play")(0).Click 

End sub 

別の試み:

Sub Encore() 

    Dim oBrowser As InternetExplorer  
    Dim div As HTMLDivElement 
    Dim sURL As String 

    sURL = "http://forvo.com"     

    Set oBrowser = New InternetExplorer 

    oBrowser.Silent = True 
    oBrowser.navigate sURL 
    oBrowser.Visible = True 

    Do While oBrowser.Busy: DoEvents: Loop 

    oBrowser.navigate "http://forvo.com/search/encore/fr" 
    Do While oBrowser.Busy: DoEvents: Loop 
    Set div = oBrowser.document.getElementsByClassName("play")(0) 
    div.FireEvent "onclick" 

End sub 

答えて

0

私は「」要素名が見つかるまで名前が見つかった場合、ループ文を実行し、クリックして、リンクのタグ名で要素を取得しています。

あなたはループの

Sub Encore() 
Dim oBrowser As InternetExplorer 
Dim mydoc As HTMLDocument 

    Dim sURL As String 

    sURL = "http://forvo.com" 

    Set oBrowser = New InternetExplorer 

    oBrowser.Silent = True 
    oBrowser.navigate sURL 
    oBrowser.Visible = True 

    Do While oBrowser.Busy: DoEvents: Loop 

    oBrowser.navigate "http://forvo.com/search/encore/fr" 
    Do While oBrowser.Busy: DoEvents: Loop 

    Set mydoc = oBrowser.document 


    Set div = mydoc.getElementsByTagName("a") 
    For Each link In div 
      Debug.Print link.Text 
      If link.Text = "encore" Then 
      link.Click 
      Exit For 
      End If 
    Next link 


Set div = mydoc.getElementsByTagName("a") 
     For Each link In div 
       Debug.Print link.Text 
       If link.Text = "encore pronunciation" Then 
       link.Click 
       Application.Wait DateAdd("s", 1, Now) 
       link.Click 

       Exit For 
       End If 
     Next link 


    End Sub 
+0

私はその意志のコードでonclickの参照をクリックしようとしています。どうもありがとう、私はhrefのリンクをクリックしようとしているわけではありませんencore pronunciation

+0

@ b.hill2387 "encore"の代わりにlink.text "encore발음" –

+0

@ b.hill2387私は更新しましたcodin g ...よく確認してください。 –

0

にリンク要素の任意の名前を使用するには、あなたの助けにキャサーをありがとうございます。私は自分の問題を回避する方法を考え出しました。これはおそらく最もクリーンな解決策ではありませんが、機能します。クリック後、クラス名が「再生」から「読み込み」に変わります。ときどきサウンドが再生されますが、クラス名が「読み込み中」になってしまったときに、Forループを設定して「再生読み込み」クラス名をチェックし、存在しなければループを終了します。

サブアンコール()

Dim oBrowser As InternetExplorer 
Dim sURL As String 
Dim a As Integer 

sURL = "http://forvo.com" 

On Error Resume Next 
Set oBrowser = New InternetExplorer 

oBrowser.Silent = True 
oBrowser.navigate sURL 
oBrowser.Visible = True 

Do While oBrowser.Busy: DoEvents: Loop 

oBrowser.navigate "http://forvo.com/search/encore/fr" 
Do While oBrowser.Busy: DoEvents: Loop 

For a = 0 To 50 
    oBrowser.document.getElementsByClassName("play")(0).Click 
    Application.Wait Now + TimeValue("00:00:01") 
    If oBrowser.document.getElementsByClassName("play loading")(0).innerText = "" Then 
     Exit For 
    End If 
Next a 

a = 0 

End Subの

関連する問題