2012-03-15 2 views
2

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

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

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

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

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

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

So can i Set 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

Можете ли вы используйте объект MSXML для публикации непосредственно на веб-сайте и вообще пропустите автоматизацию - это будет намного быстрее – SWa

+0

Я не знаком с этим. Это передний или задний конец? Боюсь, я ограничен до конца. Просто хочу, чтобы макрос копировал то, что пользователь может делать вручную, но быстрее. Приветствия – paj

+1

Это конец, я отправил пример того, как это сделать здесь http://stackoverflow.com/questions/9486847/close-javascript-alert-using-vba-automation/9516425#9516425 Можете ли вы опубликовать URL-адрес своего фактический сайт? – SWa

ответ

1

Вы могли бы попробовать что-то вроде этого, тяжело опираясь на reusing 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 
+0

Спасибо BrettDJ. Я попробовал это и скорректировал URL-адрес, как вы предложили. Кажется, не работает. Я не уверен, где он сидит и что он заменяет в моем текущем коде. Я добавил полный код sub в мой оригинальный вопрос. Дальнейшая помощь будет приветствоваться. Спасибо – paj

+0

@brettdj Вы имели в виду, что измените 'strURL' на другой URL, а не' 'My Page ..." '? – Gaffi

+0

@paj да, я имел в виду изменение 'StrURL' на URL-адрес, который вы хотели найти как открытое в IE – brettdj