如何从VBA单击此特定按钮?

时间:2013-09-20 20:22:22

标签: vba button

我有一个简单的VBA代码(见下文),它转到网页,选择一些值,单击“开始下载”按钮,然后保存文件。问题是我被困在“点击下载按钮”部分。有人可以帮忙吗?

以下是代码:

Sub Treasury_Auc_Notes()

    Dim IE As Object

    Set IE = Nothing
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    IE.Navigate "http://www.treasurydirect.gov/RI/OFAuctions?form=ndnld&typesec=notes"

    While IE.Busy
        DoEvents
Wend

    IE.Document.All.Item("begYr").Value = "2012"
    With IE.Document.getElementsByName("cols")
        .Item(0).Checked = True
    End With

    'Click "Begin download" button  (this is where I am stuck)
    'Choose Save Open or Cancel   (I haven’t got to this part yet)

    ActiveWorkbook.SaveAs Filename


End Sub

1 个答案:

答案 0 :(得分:0)

这个很棘手,由于笔记本电脑的安全性有限,我无法100%验证,但请尝试:

While IE.ReadyState <> 4
    DoEvents
Wend

IE.Document.All.Item("begYr").Value = "2012"
With IE.Document.getElementsByName("cols")
    .Item(0).Checked = True
End With
Dim ele As Object

For Each ele In IE.Document.Forms
    If ele.Action = "/RI/OFAuctions" Then
        ele.Submit
        Exit For
    End If
Next

您可能必须使用SendKeys(我认为Application.SendKeys "o")方法打开文件,然后使用VBA将ActiveWorkbook保存到所需位置。由于下面提到的原因,我无法测试SendKeys

或者,我很确定有一个WinAPI函数可以比SendKeys更可靠地执行此操作。您需要获取保存对话框的hWnd并执行其他操作以强制它打开/保存。这是相当先进的VBA,我可能会在某处提到它,但很少需要使用它。如果您在使用此特定部分时遇到问题,我建议您单独提出一个问题“如何获取文件保存对话框并从IE下载文件”或类似的内容。

注意:我无法测试SendKeys方法。当我使用上面的代码时,我相当确定文件正在下载,但是它将被隐藏到一个临时文件夹,很难找到。在任何情况下,它似乎都是通过一些手动干预下载。我收到了这个警告:

enter image description here

我点击忽略它(我不知道如何自动化这部分,我只是想验证表单.Submit方法实际上是否有效),以及经过一些创意搜索(临时互联网文件被丢弃)通常在一个奇怪/隐藏的文件夹中)我验证文件已下载,尽管它显示为TXT扩展名而不是CSV。

enter image description here

如果不是使用VBA,而是手动点击该按钮,我选择“打开”该文件将以CSV格式打开,并具有与该临时互联网位置相同的路径。