2014-09-01 16 views
0

不幸的是,我找不到任何适合我的问题的解决方案。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似乎使它变得复杂:/

非常感谢您提前!

+0

你是什么意思的URL是未知的,你和VBA。如果网址未知,如何浏览? :S – 2014-09-01 14:59:15

+0

https://www.regelleistung.net/ip/action/abrufwert 如果您选中“Herunterladen”中的框并点击“anzeigen”,您将直接进入保存文件对话框。所以,要下载的文件的Url是未知的(或者以我不知道如何获取它的方式发送到资源管理器) – frrrt 2014-09-01 22:23:18

回答

0

如果您要访问的网站的链接试试这个

For Each link In IEApp.Document.links 
    If InStr(link, "http://") > 0 Then ' when http:// tags are found ' use link.innerhtml for html text 
     ' send the link to your download sub routine... 
     download_link(link) 
    End If 
Next link 
+0

问题是,该文件的下载url不是写在html源代码中的。我希望它被生成,点击按钮后,然后链接发送到我的浏览器,它立即向我显示保存文件对话而不显示文件的URL。 – frrrt 2014-09-03 06:49:36

相关问题