【问题标题】:VBA - How to invoke Save button on a opened PDF in IE11 (No Sendkeys)VBA - 如何在 IE11 中打开的 PDF 上调用保存按钮(无发送键)
【发布时间】:2019-03-28 17:18:39
【问题描述】:

我是编程新手,这是我的第一个问题。提前感谢您的支持。

我必须经常从网站下载 PDF。单击按钮时,它会打开第二个选项卡并显示 PDF。浏览器地址栏上出现的 URL 并不完全是 PDF 的 URL,它只是一个通过令牌触发打开 PDF 的通用网站。

由于我没有 URL,我无法使用 URLDownloadToFile 选项。此选项也会损坏 PDF,并且对我不起作用。我无法使用 XMLHTTP,因为它也需要一个 URL。

除非您有其他建议,否则我认为单击出现在 IE 中打开的 PDF 框架上的“保存”按钮可能是解决方案。我不喜欢使用发送键,因为这将是一个在 PC 被锁定时运行的进程。我已经知道如何操作“另存为”窗口。我不知道如何调用保存按钮。有人可以告诉我如何做到这一点吗?

![IE PDF Screen][这是我要调用的按钮]1

【问题讨论】:

  • 因为它将是一个在 PC 被锁定时运行的进程 - VBA 和 Office 自动化绝对不是为无人值守运行而设计的。考虑改为编写(和安排)PowerShell 脚本。也就是说,这更像是一个白板/头脑风暴设计问题,而不是关于特定编程问题的特定问题,并且最终可能会因为“过于宽泛”而被关闭。
  • 我检查了图像并看到了您要单击的按钮。我发现该按钮不是网页的一部分,它是由 IE 浏览器显示的。所以我们无法使用 VBA 代码找到它。因此,无法使用 VBA 代码单击该保存按钮。
  • 谢谢。我想我会探索尝试将其打印为 PDF 而不是保存。

标签: excel vba pdf internet-explorer


【解决方案1】:

检查加载 PDF 的网站的代码,PDF URL 很可能在其中的某个地方,如果是,您可以使用 VBA 进入该站点并从代码中获取 URL,获得 URL 后,您可以尝试使用 URLmon 库,该库允许您基于 URL 下载文件/网站。下面是要下载的代码,您提到您是编程新手,您将不得不寻找打开网站的代码,导航到它并在 html 代码中搜索 URL。 (同样,在开始构建此代码之前,首先手动检查 HTML 以确认 pdf URL 位于其中)。

Option Explicit 
Private Declare Function URLDownloadToFileA Lib "urlmon" (ByVal pCaller As Long, _ 
ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, _ 
ByVal lpfnCB As Long) As Long 

Public Sub DownloadPDF()
    getFile "http://www.website.com/path/file.pdf", "C:\Downloads\filename.pfd"
    if getFile = True Then MsgBox "Download success"
End Sub

Function getFile(URL As String, LocalFilename As String) As Boolean 
    Dim downloadCheck As Long
    'We need a long variable because the library returns a number if the file downloaded or if it failed.
    downloadCheck = URLDownloadToFileA(0, URL, LocalFilename, 0, 0)
    'Check if the number is 0, if so, the file downloaded fine.
    If downloadCheck = 0 Then getFile = True 
End Function

【讨论】:

  • 谢谢里卡多。
猜你喜欢
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
  • 2017-10-01
  • 2017-06-23
  • 2016-02-05
  • 1970-01-01
相关资源
最近更新 更多