2017-12-18 3 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 

인터넷 익스플로러 소스 코드 :

<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

웹 사이트를 열 때마다 원하는 첫 번째 및 두 번째 href가 있으면 'i = i + 1' 루프에 카운터를 넣고'i = 1 '일 때 루프를 종료 할 수 있습니다. If 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> 

은 ... 당신이 그것을 클릭하면, www.facebook.com로 이동합니다 "페이스 북"으로 표시하고 있습니다. 이 경우 경로는 절대 경로입니다.

HTML 코드가 불완전하지만, 내비게이션하려는 모든 링크가 tableid="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 = html.getElementsByTagName ("A") ElementCol 에서 각 링크 만약 link.innerHTML = "클레임 관리"그럼 link.Click 종료 최종면의 경우 –

관련 문제