Search code examples
internet-explorervbaexcelwebautomation

How to code vba to open internet explorer in new session?


I am struggling to get this done since months, how to code VBA to open internet explorer in new session i have an application with many logins i need to open them simultaneously using automation , i have used

  set ie=new InternetExplorer  

but it opens the ie within the old session, i want to open new session for each and every login please help me, i googled a lot for it but ended up with out any solution. this is my code

 Function GetIE() As InternetExplorer

  Dim WScript
Dim objShellWindows

 Set objShell = CreateObject("Shell.Application")
 Set objShellWindows = objShell.Windows
 Set WScript = CreateObject("WScript.Shell")


 Dim ieStarted
 ieStarted = False

  Dim ieError
  ieError = False

    Dim seconds
      seconds = 0

  While (Not ieStarted) And (Not ieError) And (seconds < 30)

If (Not objShellWindows Is Nothing) Then
    Dim objIE As InternetExplorer
    Dim IE


    For Each objIE In objShellWindows

        If (Not objIE Is Nothing) Then

            If IsObject(objIE.Document) Then
                Set IE = objIE.Document

                If VarType(IE) = 8 Then

                    If IE.Title = EmptyTitle Then
                        If Err.Number = 0 Then
                            IE.Write LoadingMessage

                            objIE.navigate Sheet1.Login.Text
                        ieStarted = True
                        Set GetIE = objIE


                      Else

                       MsgBox ErrorMessage
                            Err.Clear
                            ieError = True

                            Exit For
                        End If
                    End If
                End If
            End If
        End If

        Set IE = Nothing
        Set objIE = Nothing
    Next
End If

Application.Wait Now + TimeValue("00:00:1")
seconds = seconds + 1
Wend

 Set objShellWindows = Nothing
 Set objShell = Nothing



   End Function

with this code im able to open the browser but sadly my webpage is opening in outlook which is already opened pls help


Solution

  • Apparently the -nomerge argument will prevent session merging.

    Shell("iexplore.exe -nomerge http://www.yoursite.com")
    

    UPDATE

    As per your comment, you need to get the IE object. You may be able to work with this:

    Dim wshShell
    Set wshShell = WScript.CreateObject("WScript.Shell")
    
    wshShell.Run "iexplore -nomerge http://www.google.com"
    
    Dim objShell
    Set objShell = CreateObject("Shell.Application")
    
    Dim objShellWindows
    Set objShellWindows = objShell.Windows
    
    Dim i
    Dim ieObject
    For i = 0 To objShellWindows.Count - 1
        If InStr(objShellWindows.Item(i).FullName, "iexplore.exe") <> 0 Then
            Set ieObject = objShellWindows.Item(i)
            If VarType(ieObject.Document) = 8 Then
                MsgBox "Loaded " & ieObject.Document.Title
                Exit For
            End If
        End If
    Next
    
    Set ieObject = Nothing
    Set objShellWindows = Nothing
    Set objShell = Nothing
    Set wshShell = Nothing