【问题标题】:IE Automation DownloadIE自动化下载
【发布时间】:2018-01-28 21:14:24
【问题描述】:

我的问题是关于 VBA 中的 IE 自动化。我让我的代码在页面中运行,然后单击下载按钮。搜索了几个小时后,我在 StackOverFlow 上看到了这个页面:

Automate saveas dialogue for IE9 (vba)

他们建议的代码非常适合保存需要下载的挂起文件...但是,我想将文件保存到特定目录中(另存为)。问题:

  1. 如何更改以下代码,使其执行我需要做的事情?我尝试在第 3 行将“保存”更改为“另存为”,但没有成功。

  2. 如果数字 1 不可能,我该如何修改代码,以便获得文件名和文件保存到的确切文件夹地址?

    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

【问题讨论】:

  • “下载按钮”的OuterHTML 代码是什么?它是直接路径的javascript动作吗?它是什么文件类型?如果是Adobe Reader等自动打开的pdf链接,可以在IE的缓存文件夹中搜索。
  • 能否分享您用于开始下载的 URL(任何可用于重现问题的 URL,请查看 MCVE)和 VBA 代码。还可以考虑使用 XHR 而不是 IE(检查1234)。
  • @PatricK:代码不属于我...
  • @omegastripes:完成!感谢 cmets ......我现在正在调查他们。你对我问题的第二部分有什么要说的吗?如果我不能解决这个问题,我的第一个问题就变得无关紧要了。
  • @Armani 这就是为什么在 SO 中你应该一次问一个问题。

标签: vba excel internet-explorer web-scraping automation


【解决方案1】:

我刚才解决了我的问题,但我忘了在这里发布。 我没有尝试将文档另存为“另存为”,而是使用上面的代码将文件保存到我的下载文件夹中。然后,我在该文件夹中查找了最新的文件。请参阅以下链接:

finding latest file in a folder and opening it (vba access)

最后,将文件从该目录移动到我想要的文件夹。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多