不幸的是,我找不到任何适合我的问题的解决方案。VBA - 如何在对象IE中按下按钮后保存文件(文件URL未知)
我想从网站上下载文件,这需要我设置一些设置以指定我想要下载的内容,然后单击一个按钮,这会在我的浏览器中给我“另存为”对话框。
到目前为止,我已设法设置设置,并通过InternetExplorer.Application单击VBA中的按钮,并通过元素和标记浏览源代码。现在确切的问题是:如何保存文件? 文件URL(至少对我和我的VBA技能)是未知的。 “SendKeys-Way”(不知道它是否可以工作,因为Save-As对话框是其中一种安全性的东西)并不是我想使用的,因为代码将自动运行并且下载不会被控制几天。
我有两个想法,使这项工作: 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似乎使它变得复杂:/
非常感谢您提前!
你是什么意思的URL是未知的,你和VBA。如果网址未知,如何浏览? :S – 2014-09-01 14:59:15
https://www.regelleistung.net/ip/action/abrufwert 如果您选中“Herunterladen”中的框并点击“anzeigen”,您将直接进入保存文件对话框。所以,要下载的文件的Url是未知的(或者以我不知道如何获取它的方式发送到资源管理器) – frrrt 2014-09-01 22:23:18