gpt4 book ai didi

excel - 通过VBA获取现有的IE

转载 作者:行者123 更新时间:2023-12-01 19:18:10 25 4
gpt4 key购买 nike

我的目标是将同一网站上多个网页的数据抓取到 Excel 中。我在 IE8 中的选项卡中打开这些页面。我没有打开其他 IE 窗口。

我已尝试以下方法打开 IE:

AppActivate "Microsoft Internet Explorer provided by [my company]"
' It loses focus, the titlebar flashes for a fraction of a second
' .. another code ..
Dim ShellApp
Set ShellApp = CreateObject("Shell.Application")
Dim ShellWindows
Set ShellWindows = ShellApp.Windows()
Dim i
For i = 0 To ShellWindows.Count - 1
If InStr(ShellWindows.Item(i).FullName, "iexplore.exe") <> 0 Then
Set IEObject = ShellWindows.Item(i)
End If
Next
' Did absolutely nothing, grabbed this code from another solution on stackoverflow

我还尝试了 GetObject(我不想使用 CreateObject 方法),如下

dim ie As InternetExplorer 'also tried As Object and other variation
set ie = GetObject(, "InternetExplorer.Application")
'However this is not workable due to security risks and Microsoft
' disabled GetObject for IE by design.

我不想使用 CreateObject 或任何变体的原因是因为我已经打开了选项卡以供抓取。 AppActivate 适用于 Microsoft Excel,但不适用于 IE。我无法按如下方式制作精确的标题栏:

AppActivate "Website name - name page - Microsoft Internet Explorer provided by [my company]"

我无法使用此功能的原因是选项卡具有不同的命名页面,不断更改标题。我也尝试过:

AppActivate InternetExplorer.Application

AppActivate InternetExplorer

AppActivate " - Microsoft Internet Explorer"

AppActivate "Microsoft Internet Explorer"

以上所有内容要么无法识别,要么仅闪烁几分之一秒(如第一个代码中所述)。我尝试过其他方法,但当我想使用打开的多选项卡的现有 IE 时,它们会创建一个新的 IE 实例。

在不同的代码中:

AppActivate "[name of page] - Microsoft Internet Explorer provided by [my company]"

一直有效,直到我将其更改为尝试引用 IE,无论我在哪个页面上。那么旧的 AppActivate 代码将不再起作用。我把它弄坏了。我真是愚蠢,没有后援。

我正在运行的系统:

Windows 7、IE8(我正在等待公司升级)、Excel 2010

最佳答案

上述答案的压缩组合,这对我有用。

<小时/>

GetIE 函数

(无需引用资料。)

Function GetIE() As Object
'return an object for the open Internet Explorer window, or create new one
For Each GetIE In CreateObject("Shell.Application").Windows() 'Loop to find
If (Not GetIE Is Nothing) And GetIE.Name = "Internet Explorer" Then Exit For 'Found!
Next GetIE
If GetIE Is Nothing Then Set GetIE=CreateObject("InternetExplorer.Application") 'Create
GetIE.Visible = True 'Make IE window visible
End Function

用法示例:

Sub demo()
Dim ie As Object
Set ie = GetIE 'get new/existing IE object
ie.Navigate "http://stackoverflow.com", 2 '2=don't keep history
Do: DoEvents: Loop While ie.Busy or ie.ReadyState <> 4'wait til loaded
Stop 'do your stuff
ie.Quit 'close IE
Set ie = Nothing 'clean up
End Sub

关于excel - 通过VBA获取现有的IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25897956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com