从下载对话框中打开Excel VBA文件

时间:2014-12-09 09:49:01

标签: java excel vba internet-explorer

在这里需要帮助,我正在尝试使用VBA与“下载”对话框进行交互。

遗憾的是无法发布图片,因为我没有这样做的声誉。

但它只是一个只有3个选项的简单对话框。

1)打开 2)另存为 3)保存

我要做的是,Excel VBA将直接打开它,而不是提示窗口/ Excel提示对话框。谁知道怎么样?尝试过(SendKeys“{TAB}”,True / SendKeys“{ENTER}”,True)但没有发生任何事情。

1 个答案:

答案 0 :(得分:2)

你可以尝试这个,因为它在IE9上为我工作:

For below showed download

  1. 将文件C:\Windows\System32\UIAutomationCore.dll文件复制到用户文档,例如C:\Users\admin\Documents,然后将参考UIAutomationClient添加到您的宏文件中。
  2. 粘贴模块中的代码:

        Option Explicit
        Dim ie As InternetExplorer
        Dim h As LongPtr
        Private Declare PtrSafe Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As LongPtr, ByVal hWnd2 As LongPtr, ByVal lpsz1 As String, ByVal lpsz2 As String) As LongPtr
    
    Sub Download()
        Dim o As IUIAutomation
        Dim e As IUIAutomationElement
        Set o = New CUIAutomation
        h = ie.Hwnd
        h = FindWindowEx(h, 0, "Frame Notification Bar", vbNullString)
        If h = 0 Then Exit Sub
    
        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
    End Sub   
    
  3. 尝试结束。