Использование браузера IE с Visual Basic - PullRequest
2 голосов
/ 15 марта 2012

Изо всех сил пытается найти решение для этого. Из Visual Basic (в частности, VBA в Excel) я могу вызвать окно Internet Explorer по заголовку, используя

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

И каждый раз он прекрасно работает.

Я могу открыть новое окно и отправить ему URL, используя ..

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

И это тоже хорошо работает Но он каждый раз открывает новый браузер, и я хочу, чтобы он всегда вызывал одно и то же окно.

Так что я могу установить ie равным одной и той же странице каждый раз. Так что вместо

Set ie = New InternetExplorer

Это что-то вроде

Set ie = ACTIVE InternetExplorer

(хотя этого, похоже, не существует). Есть ли способ установить ie таким же, как AppActivate ("My Page Title - Internet Explorer")?

Спасибо

Полный код здесь:

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

1 Ответ

1 голос
/ 15 марта 2012

Вы могли бы попробовать что-то вроде этого, в значительной степени опираясь на повторное использование Internet Explorer COM Automation Object для идентификации экземпляра IE с определенной активной веб-страницей, которую вы ищете.
strURL = "http://www.theage.com.au/"
до

«Название моей страницы - Windows Internet Explorer» при необходимости

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
...