ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: opiona

[分享] PDF插件 for VBA 合并,提取,旋转等

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2023-7-14 17:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖已被收录到知识树中,索引项:其他编程应用
本帖最后由 xiao99hui 于 2023-7-15 11:25 编辑
opiona 发表于 2023-7-3 12:27
测试了一下   最后一页 只提取到:  www.TopSage.com
你可以将 StrPages  = "178"  试试
其他内容未提取 ...

有没有办法指定区域的文字进行修改

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-16 17:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
xiao99hui 发表于 2023-7-14 17:42
有没有办法指定区域的文字进行修改

QQ截图20230716175048.jpg

TA的精华主题

TA的得分主题

发表于 2023-7-18 14:10 | 显示全部楼层

这个只能提取文字到txt里,不是在原本pdf里的文字进行修改

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-18 17:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个做不到

TA的精华主题

TA的得分主题

发表于 2023-7-19 11:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
刚看到些好贴,太牛了,坐等更新!希望下一个版本能支付输出为excel表格!

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-8-3 10:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
合并PDF.rar (236.37 KB, 下载次数: 104)

纯VBA代码  合并多个PDF文件成一个PDF文件

  1. Rem *****************************************************************************************
  2. Rem 函数名:    AppendPDFs
  3. Rem 函数功能:合并一个PDF文件集(多个PDF文件,最少要1个文件),追加也一样的
  4. Rem 返回值:    返回是否成功
  5. Rem 参数1:     ARX   字符类型集合   PDF文件集(多个PDF文件)的文件全路径,如果含:strFileName,则此文件也会被合并
  6. Rem 参数2:     StrFileName   字符类型       合成后的PDF文件保存全路径,如果已经存在,则会被替换内容
  7. Rem 使用方法:  与函数:FileAllArr  配合使用,注意要使用:全路径
  8. '''                            Dim ARX, FileArr
  9. '''                            FileArr = FileAllArr(ThisWorkbook.Path, "*.pdf", ThisWorkbook.Name, True, False)  '//含子文件夹;文件路径
  10. '''                            For X = 0 To UBound(FileArr)
  11. '''                                ReDim Preserve ARX(X)
  12. '''                                ARX(X) = ThisWorkbook.Path & "" & FileArr(X)  '//需要全路径
  13. '''                            Next X
  14. '''                            MsgBox AppendPDFs(ARX, ThisWorkbook.Path & "\630.pdf")  '//保存 文件
  15. Rem 整理:北极狐工作室 QQ:14885553
  16. '*****************************************************************************************
  17. Public Function AppendPDFs(ARX, StrFileName As String) As Boolean
  18.     'On Error Resume Next
  19.     Rem '//必要时需引用:Adobe Acrobat 10.0 Type Library  (版本可能不一样)
  20.     Dim AcroApp As Acrobat.AcroApp
  21.     Dim AvCodeFile As Acrobat.AcroAVDoc
  22.     Dim PDDoc1 As Acrobat.AcroPDDoc
  23.     Dim PDDoc2 As Acrobat.AcroPDDoc
  24.    
  25.     Dim I As Long
  26.     Dim lngPage As Long
  27.     Dim lngPageNum1 As Long
  28.     Dim lngPageNum2 As Long
  29.     Dim lngPageNum3 As Long
  30.    
  31.     lngPageNum1 = 0
  32.     lngPageNum2 = 0
  33.     lngPageNum3 = 0
  34.    
  35.     If LBound(ARX) = UBound(ARX) Then
  36.         Rem 如果只有一个文件则直接复制
  37.         FileCopy ARX(LBound(ARX)), StrFileName      ' 将源文件的内容复制到目的文件中。
  38.     Else
  39.         Rem 'Start Acrobat in the background
  40.         Set AcroApp = CreateObject("AcroExch.App")
  41.         AcroApp.Hide
  42.         Set AvCodeFile = CreateObject("AcroExch.AVDoc")
  43.         
  44.         AvCodeFile.Open ARX(LBound(ARX)), ARX(LBound(ARX))  '//打开第一个PDF文件
  45.         Set PDDoc1 = AvCodeFile.GetPDDoc
  46.         lngPageNum1 = PDDoc1.GetNumPages  '//记录页数
  47.         lngPageNum3 = 0
  48.         
  49.         For I = LBound(ARX) + 1 To UBound(ARX)  '//分别打开其他的PDF
  50.             
  51.             Set PDDoc2 = CreateObject("AcroExch.PDDoc")
  52.             PDDoc2.Open ARX(I)
  53.             
  54.             lngPage = PDDoc1.GetNumPages - 1  '//获取此文件的页数
  55.             If lngPage < 0 Then lngPage = 0
  56.             
  57.             PDDoc1.InsertPages lngPage, PDDoc2, 0, PDDoc2.GetNumPages, 0  '//向已经打开的PDF追加其他PDF
  58.             lngPageNum3 = lngPageNum3 + PDDoc2.GetNumPages  '//记录合并后的页数
  59.             
  60.             Rem 关闭后打开的文件
  61.             PDDoc2.Close
  62.             Set PDDoc2 = Nothing
  63.         Next I
  64.         
  65.         PDDoc1.Save 1, StrFileName   '//保存,如果不存在就新建,存在就替换
  66.         lngPageNum2 = PDDoc1.GetNumPages  '//合并后的总页数
  67.         PDDoc1.Close
  68.         
  69.         AvCodeFile.Close 0
  70.         
  71.         Rem 'Exit Acrobat
  72.         AcroApp.Exit
  73.         
  74.         Set AcroApp = Nothing
  75.         Set AvCodeFile = Nothing
  76.         Set PDDoc1 = Nothing
  77.     End If
  78.     If lngPageNum2 - lngPageNum1 = lngPageNum3 Then  '//如果页数相加正确
  79.         AppendPDFs = True
  80.     Else
  81.         AppendPDFs = False
  82.     End If
  83.    
  84. End Function
复制代码


TA的精华主题

TA的得分主题

发表于 2023-8-21 13:14 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-9-28 13:50 | 显示全部楼层
opiona 发表于 2023-7-3 12:27
测试了一下   最后一页 只提取到:  www.TopSage.com
你可以将 StrPages  = "178"  试试
其他内容未提取 ...

大佬你的这个库解决我大问题了,再次感谢

顺便问下,如果用vb6封装的dll ,可以实现你这样的引用方式吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-9-28 22:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
语虚何以言知 发表于 2023-9-28 13:50
大佬你的这个库解决我大问题了,再次感谢

顺便问下,如果用vb6封装的dll ,可以实现你这样的引用方式吗 ...

VB6封装的引用方式和这个不一样
这个是VS2019(vb.net)写的
再有VB6写的无法再64位office中使用

TA的精华主题

TA的得分主题

发表于 2023-11-3 12:00 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-26 03:27 , Processed in 0.036203 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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