【问题标题】:Using an IE browser with Visual Basic使用带有 Visual Basic 的 IE 浏览器
【发布时间】:2015-03-30 22:04:55
【问题描述】:

正在努力寻找解决方案。 从 Visual Basic(更具体地说是 Excel 中的 VBA)我可以使用标题调用 Internet Explorer 窗口

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

【问题讨论】:

  • 您可以使用 MSXML 对象直接发布到网站并完全跳过自动化 - 这会快得多
  • 我对此并不熟悉。这是前端还是后端?恐怕我仅限于前端。只希望宏复制用户可以手动执行的操作,但速度更快。干杯
  • 它是前端,我在这里发布了一个如何做到这一点的示例stackoverflow.com/questions/9486847/…您可以发布您的实际站点的网址吗?
  • 其实是一个内网站点。会看你的链接,谢谢
  • 我已经尝试过@Kyle 的想法来解决我自己遇到的另一个问题。它不适用于我的具体问题,但我确实使用它来掌握它,这是一个很好的解决方案。

标签: internet-explorer vba excel shdocvw


【解决方案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

【讨论】:

  • 谢谢布雷特DJ。我尝试了这个并按照您的建议调整了 URL。不过似乎不起作用。我不确定它在哪里以及它在我当前的代码中替换了什么。我在原始问题中添加了子的完整代码。进一步的帮助将是最受欢迎的。谢谢
  • @brettdj 您的意思是说将strURL 更改为另一个网址,而不是"My Page..."
  • @paj 是的,我的意思是将 StrURL 更改为您想要在 IE 中打开的网址
  • 您可以在以下位置找到变体:mrexcel.com/forum/excel-questions/…
猜你喜欢
  • 2011-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
  • 2010-10-01
相关资源
最近更新 更多