自用代码——print PDF
以下是使用VBA从网站下载并保存PDF的代码示例:
vb复制代码
Sub ExportWebPageToPDF() Dim IE As Object 'InternetExplorer.Application
Dim Shell As Object 'WScript.Shell
Dim objFSO As Object 'Scripting.FileSystemObject
Dim strFolderPath As String
Dim cell As Range
Set IE = CreateObject("InternetExplorer.Application") Set Shell = CreateObject("WScript.Shell") Set objFSO = CreateObject("Scripting.FileSystemObject")
'设定保存PDF的文件夹路径
strFolderPath = "C:\PDFs\" '需要将此路径替换为目标文件夹路径,文件夹必须事先存在
'启动IE浏览器,并设定IE窗口大小和位置
IE.Visible = True
IE.Height = 600
IE.Width = 800
IE.Left = 0
IE.Top = 0
For Each cell In Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row) '打开网页,等待页面加载完毕
IE.navigate cell.Value Do While IE.ReadyState <> 4 Or IE.Busy: DoEvents: Loop
'获取网页标题,作为保存PDF的文件名
strFileName = Replace(cell.Text, "/", "_") & ".pdf"
'在IE浏览器中按下Ctrl+P快捷键打印该页面,选择“Microsoft Print to PDF”打印机,并设置保存位置和文件名
Shell.SendKeys "^p", True
Application.Wait Now + TimeValue("00:00:02")
Shell.SendKeys "%m", True
Application.Wait Now + TimeValue("00:00:02")
Shell.SendKeys strFolderPath & strFileName, True
Application.Wait Now + TimeValue("00:00:02")
Shell.SendKeys "{ENTER}", True
'等待一段时间让打印操作完成,并关闭IE浏览器
Application.Wait Now + TimeValue("00:00:05")
IE.Quit Set IE = CreateObject("InternetExplorer.Application") Next cell
'释放内存
Set objFSO = Nothing
Set Shell = Nothing
Set IE = Nothing
MsgBox "PDF保存完成!"End Sub
使用方法:
打开Excel,新建一个工作表并在其中的A列中填入需要下载为PDF的网页URL。(注意:所给出的链接必须指向可以直接下载为PDF格式的页面。)
按下Alt + F11快捷键打开Visual Basic编辑器。
在左侧窗口中双击“这个工作簿”(或任意一个需要操作的工作表),在右侧窗口中粘贴上述代码。
修改代码开头的strFolderPath变量,将其设置为要保存PDF的文件夹路径(该文件夹必须已经存在)。
保存文件,返回Excel界面。
在Excel的工具栏中,点击“开发人员”选项卡,再依次点击“Visual Basic”、“View”、“Immediate Window”。在弹出的窗口底部的命令行输入ExportWebPageToPDF并回车即可运行代码。该代码将依次打开A列中的每个网页,并将打开的页面保存为PDF格式到C盘指定文件夹中。
注意事项:
该代码在执行过程中会打开和关闭多个IE浏览器窗口,这可能给您在使用电脑时带来一些不便。请谨慎操作。
此代码仅限于从可以直接下载为PDF格式的页面进行下载,并且您已经获得权限访问该链接的情况下使用。对于需要登陆网站或授权下载的PDF文档,该代码将不起作用。

