WEB Browser Control

J

JT

We have a spreadsheet with a Web Browser Control in it.
Our macro moves thru different pages on the control using
code something like this

Worksheets
(1).WebBrowser1.Navigate "https:/company/homepage.com/docs
/VendList.cmd"

We then inserted the following code to cycle thru until
the page is displayed.

Do While Not intReadyState = 4
intReadyState = Worksheets(1).WebBrowser1.ReadyState
Loop

The nect code resets the ReadyState to 0 to begin the
navigation to the next panel.

intReadyState = 0

Something is not right. The new page is not displaying in
the Web Browser Control unless I hit CTL+ALT+DEl and then
click on debug.

Once I do this then the "new" page is displayed or the Web
Browser Control appears to be refreshed with the new page.

This is our first attempt to use this control and any
suggestions on making this run better would be
appreciated. Thanks for the help.
 
H

Harald Staff

Hi

Your approach is unfamiliar to me, but I believe, from a glance, that the
loop uses all available CPU cycles and prevents the control from doing its
job. I can praise Visual Basic for days, but handling parallell processes is
not what it does best -or does at all.

There are several useful events in this control, I use these a lot:

WebBrowser1_StatusTextChange
WebBrowser1_BeforeNavigate2
WebBrowser1_DocumentComplete

So I suggest you trig the desired "go on" action from DocumentComplete.

HTH. Best wishes Harald
 
J

JT

Thanks for the info. Since this is the first time, I am
using the DocumentComplete event, I was wondering if you
could give me an enample of how to use this event?
Thanks for the help.
 
H

Harald Staff

Private Sub CommandButton1_Click()
Dim S As String
S = InputBox("URL:")
If S <> "" Then WebBrowser1.Navigate S
End Sub

Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As
Variant)
MsgBox WebBrowser1.LocationURL & " is fully loaded"
End Sub

It would be easier to assist if you posted what you want the webbrowser to
do for you. Anyway, that whatever would be placed where the Msgbox code is
at the moment.

HTH. Best wishes Harald
 
J

JT

Harald.......Thanks for the help. What I'm trying to do
is navigate through a series of web pages (displayed on
the WebBrowser Control on an Excel sheet). Sometimes data
is entered and sometimes a button is just selected.

What I'm looking for is code that will allow the macro to
move on once the page has been completely loaded. (I'm
trying the DocumentComplete event but I don't have the
syntax right yet.)

Here is a sample of what I am trying to do:

Dim IElem As HTMLInputElement
Set WebDoc = Worksheets(1).WebBrowser1.Document

For Each IElem In WebDoc.forms(0).elements

Select Case IElem.Name
Case "PrincipalName"
IElem.Value = ShopNum
End Select

Next IElem

intReadyState = 0

Worksheets(1).WebBrowser1.Navigate "javascript:validate
(document.keyForm);"

(Note: below is my attempt to cycle through a loop until
the ReadyState = 4) at which point the macro would move on
to the next statement. Once ReadyState = 4, we assumed
that it meant the page had finished loading. However, it
just keeps cycling through the loop until I use CTRL +
Break.)

Do While Not intReadyState = 4
intReadyState = WebDoc.ReadyState
Loop

intReadyState = 0

(Note: this is the point where I am looking for code that
will allow the macro to continue once the page has loaded.)

Thanks for all of the help and suggestions with this
issue....JT
 
H

Harald Staff

Javascript ? I believe you're out of luck; you want two pieces of code to
interact when one is from Venus and the other from Mars.

I did explain why you can't use a loop like that in my initial reply though.
The loop prevents your computer from working with other things, like
completing webpages.

HTH. Best wishes Harald
 

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