VBA - 如何在对象IE中单击按钮后保存文件(文件URL未知)

时间:2014-09-01 09:31:53

标签: vba internet-explorer automation savefiledialog

不幸的是,我找不到适合我问题的解决方案。

我想从网站下载文件,这需要我设置一些设置来指定我想要下载的内容,然后点击一个按钮,这将给我"另存为"我的浏览器中的对话。

到目前为止,我已设法设置设置并通过InternetExplorer.Application单击VBA中的按钮,并通过Elements和Tags导航源代码。现在确切的问题是:如何保存文件? 文件URL(至少对我和我的VBA技能而言)是未知的。 " SendKeys-Way" (不确定它是否会起作用,因为Save-As-dialogue是其中一个安全事项)不是我想要使用的,因为代码将自动运行并且下载不会被控制好几天。

我有两个想法可以完成这项工作: 1.)找到一种方法来激活" AutoSave"在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似乎使它变得复杂:/

非常感谢你!

1 个答案:

答案 0 :(得分: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