【发布时间】:2014-09-01 23:06:13
【问题描述】:
很遗憾,我找不到任何适合我的问题的解决方案。
我想从网站下载文件,这需要我设置一些设置以指定我要下载的确切内容,然后单击一个按钮,这将在我的浏览器中显示“另存为”对话框。
到目前为止,我已经设法通过 InternetExplorer.Application 设置设置并单击 VBA 中的按钮,并通过元素和标签浏览源代码。现在的确切问题是:如何保存文件? 文件 URL(至少对我和我的 VBA 技能而言)未知。 “SendKeys-Way”(不确定它是否会起作用,因为 Save-As-dialogue 是其中一种安全功能)不是我想要使用的,因为代码将自动运行并且下载不会控制好几天。
我有两个想法来完成这项工作: 1.)找到一种方法来激活 InternetExplorer.Application 中的“自动保存”(我还找不到)。 2.) 以某种方式获取点击后将发送到 Internet Explorer 的文件 URL。
这是我目前的代码:
Dim sStart As String, sEnd As String
sStart = "01.08.2014"
sEnd = "31.08.2014"
Dim IEApp As Object
Dim IEdoc As Object
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = False
IEApp.Navigate "https://www.regelleistung.net/ip/action/abrufwert"
Do: Loop Until IEApp.Busy = False
Set IEdoc = IEApp.Document
Do: Loop Until IEdoc.ReadyState = "complete"
Dim myURL As String
Dim Datum As String
Dim text As String
Dim zeile As String
Dim i As Integer, iFiles As Integer
Dim z As Long, lztZeile As Long
iFiles = 0
Dim WinHttpReq As Object
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
With IEdoc
.getElementByID("label.von").Value = sStart
.getElementByID("label.bis").Value = sEnd
.getElementByID("uenbId").Value = "jlhPZzcrHoI="
For i = 0 To .getElementsByTagName("input").Length - 1
If .getElementsByTagName("input").Item(i).getAttribute("value") = "anzeigen" Then
.getElementsByTagName("input").Item(i).Click
Exit For
End If
Next
End With
所以......谁能告诉我我的两个想法中的一个是否可行,也许如何?还是我没有想到的第三种方法? 不知道确切的文件 URL 似乎使它变得复杂:/
非常感谢您!
【问题讨论】:
-
你的意思是你和vba都不知道这个url。如果 url 未知,如何导航? :S
-
regelleistung.net/ip/action/abrufwert 如果您选中“Herunterladen”的复选框并单击“anzeigen”,您将直接获得保存文件对话框。所以,要下载的文件的 URL 是未知的(或者以我不知道如何获取它的方式发送到资源管理器)
标签: vba internet-explorer automation savefiledialog