【问题标题】:VBA - How to save a file after button click in object IE (File URL unknown)VBA - 如何在对象 IE 中单击按钮后保存文件(文件 URL 未知)
【发布时间】: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


【解决方案1】:

如果你想访问网站中的链接,试试这个

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 

【讨论】:

  • 问题是,该文件的下载url没有写在html源代码中。我希望它会在单击按钮后生成,然后将链接发送到我的浏览器,它会立即向我显示保存文件对话框而不显示文件的 url。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多