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

标签 java excel vba internet-explorer

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

不幸的是,我无法发布图片,因为我没有所需的声誉。

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

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

我想做的是,Excel VBA将直接打开它,而不是window/excel提示对话框。有人知道怎么做吗?尝试过 (SendKeys "{TAB}", True/SendKeys "{ENTER}", True) 但什么也没发生。

最佳答案

你可以尝试这个,因为它在 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   
    

请尝试一下。

关于java - Excel VBA 从下载对话框打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27375854/

相关文章:

java - Android OpenCV圆圈HSV颜色检测

java - 如何找到一个整数在斐波那契数列中的位置

python - 使用python在excel表上为我的不同数据框赋予标题

sql - 我的 vba 代码设计为使用输出参数从存储过程(在 SQL 中)返回一个值,但我无法获得要返回的值

ms-access - 我在哪里放置 Access vba 代码以仅在物理打印时触发?

excel - 使用workbooks.open打开工作簿后如何获取工作簿名称?

vba - 如何在Variable中存储不同的整个列?

java - 我应该在哪里放置在 Tomcat 上运行的 servlet、jsp 应用程序的数据文件?

java - 如何在Oracle中选择当月的记录?

python - 如何将 DataFrame 拆分为 FirstName 列和 LastName 列