[dba-VB] Web page manipulation

Drew Wutka DWUTKA at Marlow.com
Fri Dec 10 16:33:05 CST 2010


Now for a little more info for you.  Yes, you can certainly do this.
Technically, it's not much different than if someone handed you an .mde,
and asked you to automate tasks in the mde (so you couldn't tweak the
source code running the program itself, but you could open the mde with
VBA, and use the objects within it just like you'd use the objects in
your own application.)

Trick #1:  Just like with an .mde, you have to have a reference to the
database itself, so with a browser, you need a reference to it.  You can
either programmatically open a browser window (so you'll both create the
object, and have a reference to it), or you can ask the user which
browser window they want you to use (so you can grab the browser window
through code).

Here's an example of how to grab an existing browser window:

Function GetExistingBrowser(strKey As String)
Dim SWs As New SHDocVw.ShellWindows
Dim IE As SHDocVw.InternetExplorer
Dim mdie As InternetExplorer
Dim Resp
For Each IE In SWs
    Resp = MsgBox("Do you want to select: " & vbCrLf & vbCrLf &
IE.LocationName & vbCrLf & vbCrLf & IE.LocationURL, vbYesNo +
vbQuestion, "Select IE")
    If Resp = vbYes Then
        Set mdie = Nothing
        Set mdie = IE.Application
        NewSormDataEntry strKey, mdie
        Exit Function
    End If
Next
End Function

The 'NewSormDataEntry' function is the function I am sending the mdie
object too (the referenced browser window).  In this function strKey is
the primary key of a record that will be used in that NewSormDataEntry
to submit data into a web site.

Trick #2:  Just like when the development world got a wedgie when
Microsoft 'secured' Outlook from programs just using it to send email,
web security can be a real pain in doing something like this.  The
security is put in place to impede (note, I didn't say prevent) a hacker
from doing nasty stuff to the site.  So the 'impeding' garbage designed
to trip up hackers can get in the way of a legitimate developer trying
to create a helpful tool.  So before you COMMIT to being able to make
the tool, you'll need to look at the site itself, to see what all will
get in your way.

Trick #3:  There are two ways to 'find' the objects you will need your
code to work with.  The first is to just look at the HTML of the page(s)
you are going to manipulate.  This is where some of those 'impediments'
come into play.  Some sites prevent you from right clicking on a page
and selecting 'View Source'.  Ironically, this is just removing a
'shortcut' way to view the HTML source behind a page.  It doesn't
actually HIDE the source, because your browser is viewing the source, it
has too, otherwise it will have nothing to display.  So there are
multiple ways to 'download' the HTML you can view yourself.  Create your
own browser, and dump the HTML to a file. You can also use API calls to
just directly download the HTML, without a browser.  If the page is
derived from internal (on the website server) variables, you'll need to
use your own browser to get there and download the source.  The second
way to 'find' the objects you need to deal with are with the object
browser. Running your code in debug mode, you'll be able to see the
browser object, and all of it's child elements.

Trick #4:  Events and properties.  Setting the value of a textbox, or
clicking a button, just requires that you know what the events and
properties of those objects are.  I use the MSDN that came with the
developer edition of Office 2000.  It's got a nice HTML guide with
common HTML form elements, their properties, methods, and events.  But
all that information is also plastered all over the web.

Trick #5:  When a page loads, the browser object is there, but you may
not be able to capture 'download complete' events.  What I have done in
these cases, where my code puts in data on a page, clicks a button to go
to the next page, I put my code in a loop, that sits and waits for an
object from the next page to exist.  

Of course, if there are applets, or flash media elements, required for
interaction... can't help ya there, haven't tackled one of those.

Drew

-----Original Message-----
From: dba-vb-bounces at databaseadvisors.com
[mailto:dba-vb-bounces at databaseadvisors.com] On Behalf Of jwcolby
Sent: Friday, December 10, 2010 3:30 PM
To: VBA
Subject: [dba-VB] Web page manipulation

My client has to go through a process where he clicks about 20 - 30
things to manage to get a file 
downloaded.  It sounded totally convoluted but the question is (and I
have asked this before without 
a usable response) can I programmatically manipulate web pages to cause
specific pages to open, 
click buttons, input data into controls etc.

-- 
John W. Colby
www.ColbyConsulting.com
_______________________________________________
dba-VB mailing list
dba-VB at databaseadvisors.com
http://databaseadvisors.com/mailman/listinfo/dba-vb
http://www.databaseadvisors.com

The information contained in this transmission is intended only for the person or entity 
to which it is addressed and may contain II-VI Proprietary and/or II-VI Business 
Sensitive material. If you are not the intended recipient, please contact the sender 
immediately and destroy the material in its entirety, whether electronic or hard copy. 
You are notified that any review, retransmission, copying, disclosure, dissemination, 
or other use of, or taking of any action in reliance upon this information by persons 
or entities other than the intended recipient is prohibited.





More information about the dba-VB mailing list