ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 214|回复: 7

[原创] EXCELvba 封装函数之PDF文件导出各种格式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-4-9 16:45 | 显示全部楼层 |阅读模式
本帖最后由 bluesky_0 于 2024-4-10 12:40 编辑

文档性质的PDF,可以导出很多格式,我导出使用的格式 是 图片,EXCEL,其他格式没有用过;
在Win10  Adobe9.0 pro, Adobe DC pro 运行OK
注意生成的EXCEL格式文件,需要Adobe PRO 10.0 以上版本

  1. Public Function SavePDFAsFormat(PDFPath_old As String, pdfName As String, PDFPath_new As String, FileExtension As String, Optional fileName As String = "") As String
  2.     'PDFPath_old As String, PDFname As String, 分别是PDF文件地址,文件名;分别举例:D:\OK,test.pdf
  3.     'PDFPath_new As String, FileExtension As String, Optional file_name As String = "" 分别是新地址,格式,可选项文件名,默认是原PDF文件名
  4.     '重名不覆盖,自动重命名-001
  5.     Dim objAcroApp      As Acrobat.acroApp
  6.     Dim objAcroAVDoc    As Acrobat.acroAVDoc
  7.     Dim objAcroPDDoc    As Acrobat.acroPDDoc
  8.     Dim objJSO          As Object
  9.     Dim boResult        As Boolean
  10.     Dim ExportFormat    As String
  11.     Dim NewFilePath     As String
  12.       
  13.     'Initialize Acrobat by creating App object.
  14.     Set objAcroApp = CreateObject("AcroExch.App")
  15.    
  16.     'Set AVDoc object.
  17.     Set objAcroAVDoc = CreateObject("AcroExch.AVDoc")
  18.    
  19.     'Open the PDF file.
  20. '    boResult = objAcroAVDoc.Open(PDFPath_old & "" & pdfName & ".pdf", "")
  21.     boResult = objAcroAVDoc.Open(PDFPath_old & "" & pdfName, "")
  22.       
  23.     'Set the PDDoc object.
  24.     Set objAcroPDDoc = objAcroAVDoc.GetPDDoc
  25.    
  26.     'Set the JS Object - JavaScript Object.
  27.     Set objJSO = objAcroPDDoc.GetJSObject
  28.    
  29.     'Check the type of conversion.
  30.     Select Case LCase(FileExtension)
  31.         Case "eps": ExportFormat = "com.adobe.acrobat.eps"
  32.         Case "html", "htm": ExportFormat = "com.adobe.acrobat.html"
  33.         Case "jpeg", "jpg", "jpe": ExportFormat = "com.adobe.acrobat.jpeg"
  34.         Case "jpf", "jpx", "jp2", "j2k", "j2c", "jpc": ExportFormat = "com.adobe.acrobat.jp2k"
  35.         Case "docx": ExportFormat = "com.adobe.acrobat.docx"
  36.         Case "doc": ExportFormat = "com.adobe.acrobat.doc"
  37.         Case "png": ExportFormat = "com.adobe.acrobat.png"
  38.         Case "ps": ExportFormat = "com.adobe.acrobat.ps"
  39.         Case "rft": ExportFormat = "com.adobe.acrobat.rft"
  40.         Case "xlsx": ExportFormat = "com.adobe.acrobat.xlsx"
  41.         Case "xls": ExportFormat = "com.adobe.acrobat.spreadsheet"
  42.         Case "txt": ExportFormat = "com.adobe.acrobat.accesstext"
  43.         Case "tiff", "tif": ExportFormat = "com.adobe.acrobat.tiff"
  44.         Case "xml": ExportFormat = "com.adobe.acrobat.xml-1-00"
  45.         Case Else: ExportFormat = "Wrong Input"
  46.     End Select
  47.    
  48.     'Check if the format is correct and there are no errors.
  49.     If ExportFormat <> "Wrong Input" And Err.Number = 0 Then
  50.       
  51.         'Format is correct and no errors.
  52.       
  53.         'Set the path of the new file.
  54.         If fileName = "" Then
  55.             fileName = pdfName
  56.         End If
  57.         
  58.         counter = 1
  59.         Do While Dir(PDFPath_new & "" & fileName & "-" & Format(counter, "000") & "." & FileExtension) <> ""
  60.             counter = counter + 1
  61.         Loop
  62.         
  63.         If LCase(FileExtension) <> "xls" Then
  64.             NewFilePath = PDFPath_new & "" & fileName & "-" & Format(counter, "000") & "." & FileExtension
  65.         Else
  66.             NewFilePath = PDFPath_new & "" & fileName & "-" & Format(counter, "000") & ".xml"
  67.         End If
  68.       
  69.         'Save PDF file to the new format.
  70.         boResult = objJSO.SaveAs(NewFilePath, ExportFormat)
  71.       
  72.         'Close the PDF file without saving the changes.
  73.         boResult = objAcroAVDoc.Close(True)
  74.       
  75.         'Close the Acrobat application.
  76.         boResult = objAcroApp.Exit
  77.       
  78.     Else
  79.       
  80.         'Something went wrong, so close the PDF file and the application.
  81.       
  82.         'Close the PDF file without saving the changes.
  83.         boResult = objAcroAVDoc.Close(True)
  84.       
  85.         'Close the Acrobat application.
  86.         boResult = objAcroApp.Exit

  87.     End If
  88.     SavePDFAsFormat = NewFilePath
  89.     'Release the objects.
  90.     Set objAcroPDDoc = Nothing
  91.     Set objAcroAVDoc = Nothing
  92.     Set objAcroApp = Nothing
  93. End Function
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-4-9 22:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 shiruiqiang 于 2024-4-10 06:05 编辑

感谢分享,学习一下

TA的精华主题

TA的得分主题

发表于 2024-4-10 07:56 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-4-10 20:35 | 显示全部楼层
Adobe Acrobat 报错 无法写入指定的文件。该文件可能正在使用。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-10 21:59 | 显示全部楼层
本帖最后由 bluesky_0 于 2024-4-10 22:01 编辑
QQ214189912 发表于 2024-4-10 20:35
Adobe Acrobat 报错 无法写入指定的文件。该文件可能正在使用。

EXCELvba 文件发来看看,我没有遇到你说的 问题
我是这样子调用的

ActiveSheet.Range("AJ" & i) = SavePDFAsFormat(sourceFolderPath, fileName, destinationFolderPath, "xlsx", newFileName)

TA的精华主题

TA的得分主题

发表于 2024-4-10 23:44 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-4-11 08:20 | 显示全部楼层
我的office  2016 32位,大佬,我用access VBA  在窗体上把报表转PDF,里面的图片logo 转换成功后,丢失啦!


直接打开报表 图片控件会显示图片mylogo.png,而在窗体放置一个打印按钮:打开rpt_JY_MF报表, JY_no='" & Me![JY_NO] & "'"却不显示图片?
下面是打印按钮的VBA代码
Private Sub btnPrint_Click()
    DoCmd.OpenReport "rptJY_MF", acViewPreview, , "JY_no='" & Me![JY_NO] & "'"
End Sub

管理系统.zip (217.86 KB, 下载次数: 4)

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-4-12 11:03 | 显示全部楼层
rendiule01 发表于 2024-4-11 08:20
我的office  2016 32位,大佬,我用access VBA  在窗体上把报表转PDF,里面的图片logo 转换成功后,丢失啦 ...

你这个,我看看能不能搞定
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-1 22:06 , Processed in 0.045026 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表