IE自动化下载

时间:2018-01-28 21:14:24

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

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

Automate saveas dialogue for IE9 (vba)

他们建议的代码完美地用于保存需要下载的待处理文件...但是,我想将文件保存到特定目录中(另存为)。问题:

  1. 如何更改以下代码,以便执行我需要执行的操作?我尝试在第3行将“保存”更改为“另存为”,但它无效。

  2. 如果无法使用数字1,我​​该如何修改代码,这样我就可以获取文件的名称以及文件保存到的确切文件夹地址?

  3.     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
    

1 个答案:

答案 0 :(得分:0)

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

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

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