IE11框架通知栏保存按钮

时间:2015-07-18 09:36:33

标签: excel vba internet-explorer automation

在使用MS Excel 2010和IE11的64位系统上,我正在使用此代码从网站自动执行下载过程:

hWnd = FindWindowEx(IE.hWnd, 0, "Frame Notification Bar", vbNullString)

If hWnd Then
    hWnd = FindWindowEx(hWnd, 0&, "Button", "Save")
End If

If hWnd Then
    SetForegroundWindow (hWnd)
    Sleep 600
    SendMessage hWnd, BM_CLICK, 0, 0
End If

一切正常,直到出现Frame Notification Bar。我正在获取此窗口的HWND,但无法获得“保存”按钮的HWND,因此我可以发送单击它。

2 个答案:

答案 0 :(得分:3)

如果有人仍在尝试找到解决方案,那么IE11就在这里。

在上面Vahagn Sargsyan代码的第一行,而不是"Frame Notification Bar"获取对话框的确切标题,该对话框可能是英文"View Downloads - Internet Explorer"。这允许你抓住正确的hWnd。

因为在IE11中没有更多按钮加速器来保存文件,请按照here发布的pmr解决方案。

从pmr代码中,只需获取以下行:

Set e = o.ElementFromHandle(ByVal h)
Dim iCnd As IUIAutomationCondition
Set iCnd = o.CreatePropertyCondition(UIA_NamePropertyId, "Save")

Dim Button As IUIAutomationElement
Set Button = e.FindFirst(TreeScope_Subtree, iCnd)
Dim InvokePattern As IUIAutomationInvokePattern
Set InvokePattern = Button.GetCurrentPattern(UIA_InvokePatternId)
InvokePattern.Invoke

这应该可以解决您的问题。这为法国本土化打开了局面。

答案 1 :(得分:-1)

我假设您正在谈论IE底部弹出的那个小框架,为您提供打开,保存或取消选项。如果是这样,您可能想查看另一个回答类似问题的答案here

辅助解决方案将是一个更复杂的解决方案(here),但仍然有效。你将不得不从这个论坛中提供的工作簿中导入模块(你需要注册成为会员资格,但它是免费的,所以就这样做。)而且这基本上可以做你需要的,尽管是这样的允许您更灵活(选择文件路径,文件名等),也更复杂一点。

无论哪种方式,希望我帮助过。