Link to home
Start Free TrialLog in
Avatar of hal60
hal60

asked on

need help with automating a website from vba

i am scraping a website and all the elements that i want i can get the hyperlinks and do a click on them thru vba exept for one element. i do not know html but have managed to automate 95% of what i need from the site. There is a "Next" link on the page that i can;t get to work, the elementd from it is coming back 0, so i can't cross reference to a link,

here a snippet for testing
Dim IE As InternetExplorer
Set IE = New InternetExplorer


Set elemCollection = IE.Document.getElementsByTagName("Table")

For t = 0 To elemCollection.Length - 1 ' start with table 2 which holds negotions if first table then make t start at 0
 For r = 0 To elemCollection(t).rows.Length - 1
   For c = 0 To elemCollection(t).rows(r).Cells.Length - 1
        If InStr(1, elemCollection(t).rows(r).Cells(c).Innertext, "Next 50") Then
            Debug.Print
            ElementID2 = Rtn_ElementID(IE, elemCollection(t).rows(r).Cells(c).Innertext)  ; this is where i get 0 back
            IE.Document.getElementsByName(ElementID2).Item.Click
            GoTo foundnext50
        End If
    Next c
    Next r
Next t

Function Rtn_ElementID(IEIn As InternetExplorer, SearchFor As String, Optional ByVal count As Integer = 1) As Variant
Dim doc, element
    Set doc = IEIn.Document
        Dim i As Integer
        i = 1
        
    'loop through all elements till we find a match
    For Each element In doc.all
      If Len(element.ID) <> 0 Then
         If element.Innertext = SearchFor Then
         count = count - 1
         If count = 0 Then ' find proper occurance
           Rtn_ElementID = element.ID
           Exit Function
         End If

Open in new window

' here is the html code
</script></td><td valign="middle" nowrap><a onclick="_navBarSubmit('DefaultFormName', 'goto','N4',1,'51', '50','ResultTable');return false" href="#" class="x41">Next 50</a></td><td><script>t(5,1)</script><script> if(DanaFlushWrite) DanaFlushWrite();
</script></td><td valign="middle"><a onclick="_navBarSubmit('DefaultFormName', 'goto','N4',1,'51', '50','ResultTable');return false" href="#"><img

Open in new window

Avatar of darbid73
darbid73
Flag of Germany image

It will be a little bit difficult to solve you problem without the website.  Can you provide a link?

If it is an intranet site or not publicly available.

  • Do you get an element object in your Rtn_ElementID function?
  • If yes debug.print its html to make sure you really have the right element AND it has an ID.
  • If 1 and 2 are ok, you can try to set focus on the element first and then click or you can use the fireevent click instead.
  • one last thing, make sure that the webpage is fully loaded, I have noticed sometimes that even though you get an element the click event simply does not work until the webpage is finished and sitting quietly waiting for the next event.
Avatar of hal60
hal60

ASKER

here is the html code where the NEXT is at . javascript
           </TD>
                <TD vAlign=center noWrap><A class=x41 
                  onclick="_navBarSubmit('DefaultFormName', 'goto','N6',1,'26', '25','ActiveBidResultsTable');return false" 
                  href="#">Next 25</A></TD>
                <TD>

Open in new window

snippet.rtf
ASKER CERTIFIED SOLUTION
Avatar of darbid73
darbid73
Flag of Germany image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
My text in https:#a41874075 is the answer to his problems.