Login into secure web site and download data into worksheet?

R

ryguy7272

I posted this question a couple months ago, and got a few responses, but
never got the code to work, so I’m re-posting now (finally have some free
time to revisit this).

I’d like to go to this site:
http://www.countrybobsdemo.com/administrator/

login with these credentials:
username = Ryan
password = ryan123

I’d like to store these values in tow cells, such as Sheet2, A1 = Ryan and
Sheet2, B1 = ryan123.

Once I login, I’d like to go to Components > RSform!Pro > Manage
Submissions, which you can click though and see, or see here (once logged in):
http://www.countrybobsdemo.com/admi...n=com_rsform&task=submissions.manage&formId=2

So, all the data is there. I’d like to download all of that, into a sheet,
maybe Sheet3!! How can it be done?

Thanks,
Ryan---

PS, I tried recording a macro, and it failed miserably!!!
 
J

joel

there are 4 tables on your webpage. I down loaded the Login history table
onto a worksheet.

Sub Login()


Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

URL = "http://www.countrybobsdemo.com/administrator/"

'get web page
IE.Navigate2 URL
Do While IE.readyState <> 4
DoEvents
Loop

Do While IE.busy = True
DoEvents
Loop
Set Form = IE.document.getelementsbytagname("Form")

Set NameBox = IE.document.getElementById("modlgn_username")
'check if already login
If Not NameBox Is Nothing Then
NameBox.Value = "Ryan"

Set PasswordBox = IE.document.getElementById("modlgn_passwd")
PasswordBox.Value = "ryan123"

Form(0).submit
Do While IE.busy = True
DoEvents
Loop
End If

Set Mytables = IE.document.getelementsbytagname("table")

Set History = Mytables(1)

RowCount = 1
For Each itm In History.Rows
Range("A" & RowCount) = itm.innertext
Next itm
End Sub
 
J

joel

I modified the code to get the page you requested. The original code was
getting a table from the homepage. the new code is getting the table you
requested. The table for some reason is repeating data twice in some cells
of the table. Yo need to clean up the reasults, but it give ALL the data in
the table.


Sub Login()


Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

HomeURL = "http://www.countrybobsdemo.com/administrator/"

'get web page
IE.Navigate2 HomeURL
Do While IE.readyState <> 4
DoEvents
Loop

Do While IE.busy = True
DoEvents
Loop
Set Form = IE.document.getelementsbytagname("Form")

Set NameBox = IE.document.getElementById("modlgn_username")
'check if already login
If Not NameBox Is Nothing Then
NameBox.Value = "Ryan"

Set PasswordBox = IE.document.getElementById("modlgn_passwd")
PasswordBox.Value = "ryan123"

Form(0).submit
Do While IE.busy = True
DoEvents
Loop
End If

URL = "index.php?option=com_rsform&task=submissions.manage&formId=2"

'get web page
IE.Navigate2 HomeURL & URL
Do While IE.readyState <> 4
DoEvents
Loop

Do While IE.busy = True
DoEvents
Loop

Set Mytables = IE.document.getelementsbytagname("table")

Set History = Mytables(2)

RowCount = 1
For Each itm In History.Rows
ColCount = 1
For Each Col In itm.Cells
Cells(RowCount, ColCount) = Col.innertext
ColCount = ColCount + 1
Next Col

RowCount = RowCount + 1
Next itm
End Sub
 
J

joel

I made a small change to get rid of the duplicate data. This works very well

Sub Login()


Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True

HomeURL = "http://www.countrybobsdemo.com/administrator/"

'get web page
IE.Navigate2 HomeURL
Do While IE.readyState <> 4
DoEvents
Loop

Do While IE.busy = True
DoEvents
Loop
Set Form = IE.document.getelementsbytagname("Form")

Set NameBox = IE.document.getElementById("modlgn_username")
'check if already login
If Not NameBox Is Nothing Then
NameBox.Value = "Ryan"

Set PasswordBox = IE.document.getElementById("modlgn_passwd")
PasswordBox.Value = "ryan123"

Form(0).submit
Do While IE.busy = True
DoEvents
Loop
End If

URL = "index.php?option=com_rsform&task=submissions.manage&formId=2"

'get web page
IE.Navigate2 HomeURL & URL
Do While IE.readyState <> 4
DoEvents
Loop

Do While IE.busy = True
DoEvents
Loop

Set Mytables = IE.document.getelementsbytagname("table")

Set History = Mytables(2)

RowCount = 1
For Each itm In History.Rows
ColCount = 1
For Each Col In itm.Cells
Select Case Col.Children.Length

Case 0, 1, 2
Cells(RowCount, ColCount) = Col.innertext
Case Is >= 3
Cells(RowCount, ColCount) = Col.Children(1).innertext
End Select

ColCount = ColCount + 1
Next Col

RowCount = RowCount + 1
Next itm
End Sub
 
R

ryguy7272

W-O-N-D-E-R-F-U-L-!-!-!
That's why you are gold-level, Joel!

Thanks so much!!
Ryan---
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top