Using an IE browser with Visual Basic

21,381

You could try something like this, drawing heavily on reusing Internet Explorer COM Automation Object to identify an instance of IE with then specific web page active that you are looking for.

Change
strURL = "http://www.theage.com.au/"
to

"My Page Title - Windows Internet Explorer" as necessary

VBA

Sub Test()
Dim ShellApp As Object
Dim ShellWindows As Object
Dim IEObject  As Object
Dim strURL As String
strURL = "http://www.theage.com.au/"
Set ShellApp = CreateObject("Shell.Application")
Set ShellWindows = ShellApp.Windows()
Dim i
For i = 0 To ShellWindows.Count - 1
    If InStr(ShellWindows.Item(i).FullName, "iexplore.exe") <> 0 Then
        If ShellWindows.Item(i).LocationURL = strURL Then
            Set IEObject = ShellWindows.Item(i)
            MsgBox "IE instance with " & strURL & " found"
            Exit For
        End If
    End If
Next
End Sub
Share:
21,381
paj
Author by

paj

Updated on March 31, 2020

Comments

  • paj
    paj about 4 years

    Struggling to find a solution to this one. From Visual Basic (VBA in Excel more specifically) I'm able to call an Internet Explorer window by title using

    AppActivate ("My Page Title - Windows Internet Explorer")
    

    And it works great each time.

    I can open a new window and send a url to it using..

    Dim ie As Object
    Set ie = New InternetExplorer
    ie.Visible = True
    ie.Navigate "http://websiteurl"
    

    And that also works okay But it opens a new browser each time and I want it to always calls the same window.

    So can i Set ie to equal the same page each time. So instead of

    Set ie = New InternetExplorer
    

    It does something like

    Set ie = ACTIVE InternetExplorer
    

    (though that doesn't seem to exist). Is there some way of setting ie to be the same as AppActivate ("My Page Title - Internet Explorer") ?

    Thanks

    Full Code here:

    Sub Find_Recordings()
    Dim MyAppID, ReturnValue
    
    AppActivate ("My Page Title - Windows Internet Explorer")
    
    SendKeys ("^a")
    Application.Wait (Now + TimeValue("0:00:01"))
    SendKeys ("^c")
    Application.Wait (Now + TimeValue("0:00:01"))
    
    AppActivate ("Microsoft Excel")
    Sheets("DataSearcher").Select
    Range("K1").Select
    ActiveSheet.PasteSpecial Format:="Text", Link:=False, DisplayAsIcon: = False
    
    Range("A1").Select
    
    Dim ie As Object
    Set ie = New InternetExplorer
    ie.Visible = True     ie.Navigate "http://wwwmyurl"
    
    Do Until ie.ReadyState = READYSTATE_COMPLETE
    Loop
    
    ie.Document.getElementById("searchdata1").Value = Range("J1")
    ie.Document.getElementById("library").Value = "RECORDINGS"
    ie.Document.searchform.Submit
    
    
    
    End Sub
    
  • paj
    paj about 12 years
    Thanks BrettDJ. I tried this and adjusted the URL as you suggested. Doesn't seem to work though. I'm not sure where it sits and what it replaces in my current code. I've added the full code of the sub in my original question. Further help would be most welcome. Thanks
  • Gaffi
    Gaffi about 12 years
    @brettdj Did you mean to say change strURL to another URL, and not "My Page..."?
  • brettdj
    brettdj about 12 years
    @paj yes, I meant change StrURL to the url that you wanted to locate as being open in IE
  • Julien Kronegg
    Julien Kronegg over 11 years
    You can find a variant at: mrexcel.com/forum/excel-questions/…