Java Excel VBA“从下载打开文件”对话框

Java Excel VBA“从下载打开文件”对话框,java,excel,vba,internet-explorer,Java,Excel,Vba,Internet Explorer,这里需要帮助,我正在尝试使用VBA与下载对话框进行交互 不幸的是,我无法发布图片,因为我没有必要的声誉 但它只是一个只有3个选项的简单对话框 1) 打开 2) 另存为 3) 拯救 我想做的是,excel VBA将直接打开对话框,而不是Windows/excel提示对话框。有人知道怎么做吗?已尝试(SendKeys“{TAB}”,True/SendKeys“{ENTER}”,True),但未发生任何问题。您可以尝试此操作,因为它在IE9上对我有效: 将文件C:\Windows\System32\

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

不幸的是,我无法发布图片,因为我没有必要的声誉

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

1) 打开 2) 另存为 3) 拯救


我想做的是,excel VBA将直接打开对话框,而不是Windows/excel提示对话框。有人知道怎么做吗?已尝试(SendKeys“{TAB}”,True/SendKeys“{ENTER}”,True),但未发生任何问题。

您可以尝试此操作,因为它在IE9上对我有效:

  • 将文件
    C:\Windows\System32\UIAutomationCore.dll
    复制到用户文档,即
    C:\users\admin\Documents
    ,然后将引用
    UIAutomationClient
    添加到宏文件中
  • 在模块中粘贴以下代码:

        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   
    
  • 在你这边试试