2012-03-15 99 views
2

努力尋找解決方案。 從Visual Basic(VBA在Excel中更具體)我可以通過標題來調用Internet Explorer窗口使用在Visual Basic中使用IE瀏覽器

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

而且它每一次的偉大工程。

我可以打開一個新的窗口和使用發送一個網址給它..

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

你能使用MSXML對象直接發佈到網站並完全跳過自動化 - 這會更快 – SWa 2012-03-15 16:19:21

+0

我對此並不熟悉。是前端還是後端?恐怕我只限於前端。只需要宏複製用戶可以手動執行的操作,但速度更快。乾杯 – paj 2012-03-16 09:40:19

+1

它的前端,我發佈了一個如何在這裏做的例子http://stackoverflow.com/questions/9486847/close-javascript-alert-using-vba-automation/9516425#9516425你可以發佈你的網址實際網站? – SWa 2012-03-16 10:23:28

回答

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 2012-03-15 14:59:21

+0

@brettdj你的意思是說改變'strURL'到另一個URL,而不是'「我的網頁...」'? – Gaffi 2012-03-15 15:06:31

+0

@paj是的,我的意思是將'StrURL'改爲你想要在IE中打開的url – brettdj 2012-03-16 00:59:44