使用vba将ie置于最前面并激活(即手动点击)

时间:2019-05-16 03:09:12

标签: html vba internet-explorer web-scraping

我写了一个脚本,它将打开一个工作簿并在工作簿中运行宏。该宏应该打开Internet Explorer,并使用SendKeys命令登录到网站。我遇到的问题是,当Excel在前面运行时,Internet Explorer在后台打开。本质上,我希望新打开的Internet Explorer位于最前面并被选中,以便可以使用SendKeys命令。我知道,当我手动运行宏时,它会工作,并且由于某种原因,它也很少会工作(在计算机重新启动后)。我不确定这是否是时间问题。

我必须使用SendKeys的原因是,仅当您手动输入ID和密码时,登录按钮才起作用。我还尝试使用此按钮来禁用按钮,但此按钮不起作用,因此我必须使用SendKeys

With .querySelector("#subBtn")
                .disabled = False
                .Click

已经有很多人问过这个问题,但似乎没有确定的答案。这是我尝试过的代码。

Dim ie As New InternetExplorer
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
CreateObject("WScript.Shell").AppActivate "Internet Explorer"
ie.Navigate "Website here"

我还尝试在网站加载后显示该网站,但该网站不起作用。

Set ie = CreateObject("InternetExplorer.Application")
ie.Navigate "website here"
While ie.Busy Or ie.ReadyState <> READYSTATE_COMPLETE
    DoEvents
Wend
ie.visible = True 
DoEvents

我还尝试过先将excel最小化,然后设置i.e. visible=false并将其恢复为true。这样会将Internet Explorer置于最前面,但是没有选中它(焦点?),因此SendKeys命令不起作用。

    ActiveWindow.WindowState = xlMinimized
    ie.Visible = False
    DoEvents
    ie.Visible = True

我希望前面有Internet Explorer并选择它,以便可以SendKeys

0 个答案:

没有答案