【发布时间】:2018-01-28 21:14:24
【问题描述】:
我的问题是关于 VBA 中的 IE 自动化。我让我的代码在页面中运行,然后单击下载按钮。搜索了几个小时后,我在 StackOverFlow 上看到了这个页面:
Automate saveas dialogue for IE9 (vba)
他们建议的代码非常适合保存需要下载的挂起文件...但是,我想将文件保存到特定目录中(另存为)。问题:
如何更改以下代码,使其执行我需要做的事情?我尝试在第 3 行将“保存”更改为“另存为”,但没有成功。
如果数字 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的缓存文件夹中搜索。 -
@PatricK:代码不属于我...
-
@omegastripes:完成!感谢 cmets ......我现在正在调查他们。你对我问题的第二部分有什么要说的吗?如果我不能解决这个问题,我的第一个问题就变得无关紧要了。
-
@Armani 这就是为什么在 SO 中你应该一次问一个问题。
标签: vba excel internet-explorer web-scraping automation