2017-12-18 70 views
0

VBAの新機能で、Internet Explorerでhrefリンクをクリックする方法に関する質問がありました。ソースページには複数のhrefがあります。私はこれに遭遇したことはないし、それは私に苦労している!私はこのウェブサイトを見て答えを探していましたが、ここで質問することにしました。Excel VBAを使用してhrefをクリックする方法

以下に、問題が発生するまでのコードと、Internet Explorerのソースコードを示します。

私が試したことをコメントし、私が受け取ったエラーを列挙しました。

以下に、コード:

Sub() 
Dim i As Long 
Dim URL As String 
Dim IE As Object 
Dim objElement As Object 
Dim objCollection As Object 

User = "User" 
Pwd = "Pwd" 


Set IE = CreateObject("InternetExplorer.Application") 

IE.Visible = True 

URL = "URL.com" 

IE.Navigate URL 

Do While IE.ReadyState <> 4 
    DoEvents 
Loop 

    IE.Document.getElementById("txtUsername").Value = User 
    IE.Document.getElementById("txtPassword").Value = Pwd 
    IE.Document.getElementById("btnSubmit").Click 


    'IE.getElementByClassName("txtTerms").Click - Runtime Error 438 
    'IE.getElementByTagName("Claims Management").Click - Runtime Error 438 

'Set HREF = IE.Document.getElementsByClassName("txtTerms") 
    'For Each HREF In IE.Document.getElementsByTagName("Claims").Click - No error occurs, nothing happens. 

End Sub 

Internet Explorerのソースコード:

<table id="tblContent"> 
<tr> 
<td class="txtTerms"><a href='href url 1'>Claims</a> 

<br>Download<br>Create<br><a class='terms' href='href url 2' 
target='terms'>Terms</a><br><br></td> 
</tr> 

私の質問は、VBAだけ 'のhref URL 1' をクリックして取得する方法、でしょうか?

追加情報が必要な場合はお知らせください。私はVBAの私のレベルのために謝罪しますが、私はもっと学ぶことに興奮しています!

ありがとうございました!

+0

いくつかのガイダンスのために[この回答](https://stackoverflow.com/a/47333783/7690982)を参照してください。 – danieltakeshi

+0

は、私はそれを感謝し、非常に非公式た指導ダニエル!をありがとうございました。 しかし、 'href url 1'と 'href url 2'は静的ではなく、ログインするたびに変更されることを忘れていました。別の方法がありますか別の方法を使って/ href url 1 'をクリックするには? –

+0

ウェブサイトを開くたびに1回目と2回目のhrefが必要な場合は、ループ「i = i + 1」内にカウンタを置いて、If i = 1のときにi = 1のときループを終了できます次にExit For ' – danieltakeshi

答えて

1

HTMLでは、hrefは絶対パスまたは相対パスを含むタイプ<a>(リンク)のプロパティです。たとえば :

<a href="https://stackoverflow.com/questions/">Questions</a> 

は... "質問" として表示され、あなたはそれをクリックすると、www.stackoverflow.com/questions/にあなたをもたらすでしょう。パスが相対的なので "www.stackoverflow.com"が自動的に追加されていることに注意してください。

<a href="https://www.facebook.com">Facebook</a> 

は... "Facebookの" として表示され、あなたはそれをクリックすると、www.facebook.comにあなたをもたらすでしょう。この場合、パスは絶対パスです。

あなたのHTMLコードは完全ではありませんが、ナビゲートしたいすべてのリンクはに含まれています(id="tblContent")。そのような場合、あなたはそのテーブル内のすべてのリンク(tagName == 'a')を取得し、コレクション内の値を格納することができます

Dim allHREFs As New Collection 
Set allLinks = IE.Document.getElementById("tblContent").getElementsByTagName("a") 
For Each link In allLinks 
    allHREFs.Add link.href 
Next link 

あなたは、それらをナビゲートして、一つ一つをしなければならない何をするべきかを決定することができます:

For j = 1 To allHREFs.Count 
    IE.Navigate URL + allHREFs(j) '<-- I'm assuming hrefs are relative. 
    'do your stuff here 
Next href 
+0

遅く応答して申し訳ありません。しかし、以下はhrefを正常に「クリック」したコードです。私は得ることができたすべての助けに感謝し、それは本当に助けになった!!ありがとうございました。 html = ieを設定します。ElementCol 文献 設定ElementCol = html.getElementsByTagName( "A")各リンクの link.innerHTMLは= "クレーム管理" の場合 終了を次に link.Click 終了した場合 –

関連する問題