使用vba分割和重命名pdf文件

2024-04-27

我收到了一份包含多张工资单的合并文件。
每张工资单上的特定位置都有一个特定的数字。
我希望使用这个确切的数字作为每个文件名(例如37224.pdf) 我尝试使用下面的 VBA 代码将工资单拆分并命名为单独的工资单。

Option Explicit
Sub pdf()
Dim Acro_app As Acrobat.AcroApp
Dim Acro_PDDoc As Acrobat.AcroPDDoc
Dim Acro_NewPDDoc As Acrobat.AcroPDDoc
Set Acro_app = New Acrobat.AcroApp
Set Acro_PDDoc = New Acrobat.AcroPDDoc
Acro_PDDoc.Open "C:\Users\User\Desktop\PDF\Slip.pdf"
Dim i As Integer
For i = 0 To Acro_PDDoc.GetNumPages() - 1
Set Acro_NewPDDoc = New Acrobat.AcroPDDoc
Acro_NewPDDoc.Create
Acro_NewPDDoc.InsertPages -1, Acro_PDDoc, i, 1, 1

Acro_NewPDDoc.Save 1, "C:\Users\User\Desktop\PDF\S" & i & ".pdf"

Next i
End Sub

运行代码后,文件名显示为 S1.pdf、S2.pdf … 等,但我想将其设置为 37224.pdf、36299.pdf … 等

谁能帮我?


如果您的计算机上有 PDFtools 或类似工具的副本(甚至 Powshell 也有 PSwritePDF 作为下载模块),则可以使用单个控制台行命令将 pdf 文件拆分为多个页面。

对于 Windows 用户,可以从 GitHub 获取现代 64 位 2023 版本的 pdftotexthttps://github.com/oschwartz10612/poppler-windows https://github.com/oschwartz10612/poppler-windows或者对于 32 位使用,目前更新的 Pdf 版本为 4.04http://www.xpdfreader.com/download.html http://www.xpdfreader.com/download.html然而,没有单独的 PDF

pdftotext 的强大之处在于它可以从 PDF 页面的窗口中提取文本字符串,这里我通过简单地定义一个区域来重命名两个 S1.pdf 和 S2.pdf ,为了说明起见,该区域被着色为绿色,并且我将窗口定义为

-x 100 -W 300 -y 50 -H 25

为了补偿水平变化,因此,如果源代码中有轻微的位移,这并不重要,并且重命名可以是该区域中的任何文本,因此如果需要,我可以包含“发票”。对于 VBA,您可以完成该任务,但我建议在 cmd 控制台上测试和实时运行要容易得多。这对于您的使用来说已经足够了,但是拖放分离功能尚未包含在内,因为我不需要,您的问题也不需要。

更改窗口以适合您的情况并将文件另存为 SETNUM.bat 并在控制台上运行SetNum c:\data\output\S*.pdf

@echo off & setlocal ENABLEDELAYEDEXPANSION
REM REM REM set "PDFsplit=C:\Apps\PDF\poppler\23.01.0\Library\bin\pdfseperate.exe"
REM REM REM if not exist %PDFsplit% echo Resource not found & exit /b 1
set "PDF2text=C:\Apps\PDF\poppler\23.01.0\Library\bin\pdftotext.exe"
if not exist %PDF2text% echo Resource not found & exit /b 1
set "workDir=C:\data\output"
if not exist "%workDir%" md "%workDir%"
if not exist "%workDir%" echo Folder not found & exit /b 2
set "Input=%~f1"
if not exist "%~dpn1.pdf" echo "%~dpn1.pdf" not found & exit /b 3

REM need to switch to files dir
cd /d "%~dp1"
echo Processing ...

REM pdfseperate is not need for this example, but would expect/allow for drag and drop as required
REM to use this file simply use the folder path of multiple files with prefix before numbers e.g.
REM getnum c:\data\output\S*.pdf

if exist "%temp%\getText.txt" del /F "%temp%\getText.txt"
for /f "usebackq delims==" %%c in (`dir /B "%~1"`) do (
echo.|set /p="%%c" "

"%PDF2text%" -nopgbrk -layout -f 1 -l 1 -x 100 -W 300 -y 50 -H 25 "%%c" -
) >>"%temp%\getText.txt"

if exist "%temp%\getText.cmd" del "%temp%\getText.cmd"
for /f "tokens=*" %%a in ('type "%temp%\getText.txt"') do echo Ren ^"%%a.pdf >>"%temp%\getText.cmd"

REM REM REM FOR TESTING remove REM on lines below

REM CALL "%temp%\getText.cmd"
rem del /F "%temp%\getText.txt"&&del /F "%temp%\getText.cmd"
ECHO Processing done
pause
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用vba分割和重命名pdf文件 的相关文章

  • 每次更改工作表时运行宏

    我对宏还很陌生 每次更新 更改或其他任何操作时 我都需要在工作表上运行一些代码 这是我需要运行的代码 我怎样才能做到这一点 Sub UnMergeFill Dim cell As Range joinedCells As Range For
  • 为什么从 Evaluate 调用时 VBA Find 循环失败?

    当使用 Application Evaluate 或 ActiveSheet Evaluate 方法调用例程时 我在子例程内运行查找循环时遇到一些问题 例如 在下面的代码中 我定义了一个子例程 FindSub 它在工作表中搜索字符串 xxx
  • 使用 iText 某些 pdf 文件水印不显示

    我们公司使用 iText 在一些 pdf 表格上标记一些水印文本 不是图像 我注意到 95 的表格可以正确显示水印 大约 5 则不能 我测试了一下 复制了2个原始pdf文件 一个被标记为ok 另一个不ok 然后通过一个小程序进行测试 结果相
  • Excel VBA 将工作表保存到具有唯一名称的多个文件夹

    感谢您的所有意见 下面的代码是收到的输入的最终结果 我已经对这些错误进行了评论 这些错误直接关系到保存到数组中定义的文件夹中的总体预期结果 Option Explicit Public EngName As String TeamNum A
  • Javascript 链接在 selenium excel vba 中没有响应

    我正在尝试做这样一行点击 javascript 链接的操作 FindElementById ctl00 ContentPlaceHolder1 LinkButton4 WaitDisplayed True 3000 Click 这条线没有任
  • 使用 Excel VBA 在 Outlook 电子邮件中使用 HTML 设置背景图像

    我正在尝试使用 Excel VBA 创建一封有关澳大利亚儿童癌症研究所的电子邮件 并带有背景图像 CCIALittleGirl jpg 然后 我希望在其上方有一个文本或文本框 最好是带有白色粗体文本 我可以在运行时填充这些文本 我可以在电子
  • 无法在函数内将数据写入 Excel 2007/2010 中的 VBA 单元格

    我想通过 VBA 设置单元格的值 我用谷歌搜索了一下 看到了一些解决方案 Sheets SheetName Range A1 value someValue Sheets SheetName Cells 1 1 value someValu
  • 从命令行使用 VBScript 从 Excel 外部运行 Excel 宏

    我正在尝试从 Excel 文件外部运行 Excel 宏 我目前正在使用从命令行运行的 vbs 文件 但它一直告诉我找不到宏 这是我尝试使用的脚本 Set objExcel CreateObject Excel Application Set
  • 从多页表单中获取活动控件名称和值

    我已经在网上寻找解决方案几个月了 但没有成功 我创建于Excel 2010 a UserForm与多页 我正在尝试编写一个函数来获取activecontrol名称和值 到目前为止 我已经成功使用此命令获取了控件的名称Me MultiPage
  • 如何通过VBA刷新所有单元格

    有没有办法触发 从VBA Excel要求它重新评估所有Excel单元格 谢谢 The 计算 http msdn microsoft com en us library aa223802 28office 11 29 aspx方法可以重新计算
  • VBA中工作表变化的递归调用

    我已经创建了包含多个工作表的工作簿 我正在尝试使用 WorkSheet ChangeSheet1 即工作表 1 上的某些更改正在复制到工作表 2 中 同样 如果有任何改变Sheet2我想做出类似的改变Sheet1以及 这样做时 两张表上都会
  • 将 PDF 存储在 MySQL 数据库中

    我正在开发一个应用程序 我需要创建 PDF 格式的发票 我在用着pdf包 https github com psliwa PdfBundle并且 PDF 文件已正确创建 public function helloAction format
  • 运行时错误:范围自动筛选上的“1004”

    我想用 VBA 做什么 使用数组过滤表并删除行 我的数组有 4 个元素 在循环中更改为有 5 个不同的集合 正在过滤的列有 5 个元素 我只想得到 1 这是一个循环 它将创建 5 个报告 每个报告根据第 29 列过滤不同的元素 如果在调试模
  • 使用 ps2pdf (ghostscript) 创建正确的 PDF/X

    我已经为此苦苦挣扎了几天 所以我想我应该在这里寻求帮助 基本上 我尝试使用 ps2pdf 版本 9 10 创建正确的 PDF X 1 和 PDF X 3 文档 是的 我知道据说 ps2pdf 仅支持 PDF X 3 请参阅这个线程 http
  • Word VBA“项目不可见”

    有谁知道如何使模板在 Word 2007 中可见 我创建了一个模板 Experiments dotm 使用加载项添加它 但是当我尝试在其中创建模块时 收到错误消息 项目无法查看 关于 项目无法查看 问题的解释可以参见here http ms
  • 使用什么来生成包含动态生成的条形码的 pdf 文档(Java)?

    我的要求要求生成包含任意文本和条形码的 pdf 文档 我有相关的question https stackoverflow com q 6625849 59470它解决了pdf生成部分 但在这里我想知道如何在Java中将条形码合并到pdf中
  • 有没有办法设置一个变量一次并在多个地方使用它而不给它模块级别的范围?

    我有一个循环将用户窗体控件添加到集合中 由于多个地方都需要该集合 因此我将其放入模块中并在需要时调用它 这意味着该集合仅在需要时才位于内存中 但这也意味着我每次想要使用它时都会运行一个循环 I could已给出集合模块级别范围并在第一次需要
  • VBA:访问 JSON

    我正在处理 VBA 投影 但不确定如何访问此 JSON 中的 id 应该将 players 设置为什么才能在循环中获取 id 我已经用更多代码更新了问题 JSON event games players id 182759 Code Pri
  • Python:使用 python 运行 Excel 宏

    我需要通过 python 运行 Excel 宏 但总是收到以下错误 result self oleobj InvokeTypes dispid LCID wFlags retType argTypes args pywintypes com
  • 双击事件 - 多个范围

    我正在寻找为双击事件在多个范围内进行编码的最佳方法 Private Sub Worksheet BeforeDoubleClick ByVal Target As Range Cancel As Boolean If Not Interse

随机推荐

  • Asp.net 调用 C# 层调用托管 C++ 调用本机 C++

    我的项目结构如下 ASP NET呼叫C 层调用ManagedC 调用Native C 我试图避免使用互操作 所以这就是托管 C 层的原因 我编写了测试 C 层的单元测试 它工作得很好 当我尝试运行 asp net 页面时 我得到 Could
  • input[type=hidden] 和visibility="hidden" 之间的区别

    有什么区别input type hidden and visibility hidden 第一个是输入元素 第二个用于 CSS2 中的样式 visibility hidden 可见性属性指定元素是否可见 输入 类型 隐藏 http www
  • R:如何获取时间序列数据中日期时间列的最大值

    我正在研究时间序列数据 我有 2 个日期时间列和 1 个会计周列 我给出了一个例子 我遇到如下情况 我需要获取 EditDate 的最大值 EditDate lt c 2015 04 01 11 40 13 2015 04 03 02 54
  • mat Snackbar 单元测试消息为空

    我有一个使用的定制服务matSnackbar显示警报和自定义matSnackbar用作 SnackBar 模板的组件 我为它编写了一个单元测试 并想测试在其中显示我的消息 fit should show my alert message g
  • 2.0版本的System.Management.Automation?

    是否有 2 0 或更高 版本System Management Automation集会 我正在看PowerShell http technet microsoft com en us library system management a
  • Cython:如何使用 C++ 类的用户定义转换?

    赛通的文档 https cython readthedocs io en latest src userguide wrapping CPlusPlus html overloading operators似乎对如何用户定义的转换 http
  • 在 bash 脚本中获取星期几

    我想在变量中包含星期几DOW 所以我使用以下 bash 脚本 DOM date d DOW DOM 7 sed s 0 不幸的是我收到这个错误 bash 09 command not found 变量中的预期结果为 2 9 7 2 DOW
  • 在 Ubuntu 12.04 中打开 eclipse juno 并出现错误“No more handles ...”

    从今天开始 每次我打开 Eclipse 时 都会弹出一个标题为 出现问题 的消息框 内容如下 不再处理 未知的 Mozilla 路径 未设置 MOZILLA FIVE HOME 可能的参数 0 1 2 3 不再有句柄 未知的 Mozilla
  • Wicket setResponsePage() 方法如何工作?

    在学习 JSP 和 servlet 时 我听说了重定向和调度 他们中的哪一个做 Wicket 的setResponsePage 履行 What setResponsePage确实取决于几个因素 您调用 setResponsePage 的次数
  • 仅使用视频标签实时流式传输到 HTML5(不带 webrtc)

    我想将实时编码数据包装到 webm 或 ogv 并将其发送到 html5 浏览器 webm 或 ogv 可以做到这一点吗 Mp4 由于其 MDAT 原子而无法做到这一点 无法实时将h264和mp3打包并发送给客户端 假设我正在从网络摄像头输
  • 为什么 Swift 中委托方法需要公开?

    我正在快速开发一个框架 我正在创建一个处理框架中 BLE 内容的类 这个类应该是公共的 因为我需要从使用我的框架的外部应用程序访问这个类 我的班级结构如下 public class MyClass NSObject CBCentralMan
  • Typescript 2 中分号是必需的吗?

    我一直在寻找这个问题的答案 但收到的信息很复杂 我知道分号在 JavaScript 中是必需的 因为自动分号插入 ASI 但是 TypeScript 是否有相同的限制 我认为它不会 因为它会转换为 JavaScript 并且很可能会在 AS
  • 谷歌折线图:如何添加单位?

    https google developers appspot com chart interactive docs gallery linechart Example https google developers appspot com
  • React 项目中的 Typescript 不再识别“as”关键字

    我将 react scripts 升级到最新版本 以消除 在定义之前使用 React 错误 我还升级到了最新版本的打字稿 现在我收到以下信息 Failed to compile src components NearBy tsx Line
  • ActionBar 上的自定义主页按钮

    我正在使用 ActionBar Sherlock 库 所以 要更改默认的主页按钮 我这样做了 这不起作用 所以 我也添加了这个
  • HTML5 下载属性不适用于 Mozilla [重复]

    这个问题在这里已经有答案了 a class download btn href https example com test pdf target blank Download a 我上面有简单的下载链接html5代码 它在 mozilla
  • 导入数千条记录后无法推送到 Heroku

    我有一个问题 我认为我的 sqlite3 数据库太大 我将大约 100 000 条记录导入到数据库中 并且能够 git Push 和 git Push heroku 现在我可能犯了一个错误 导入了太多记录 500 000 我能够推送到 gi
  • Django - 在设置中使用反向 url 映射

    例如 django 设置文件中的一些选项是 urlLOGIN URL and LOGIN REDIRECT URL 是否可以避免对这些 url 进行硬编码 而使用反向 url 映射 目前 这确实是我发现自己在多个地方编写相同网址的唯一地方
  • 是否可以阻止对象的堆栈分配并只允许使用“new”实例化它?

    是否可以阻止对象的堆栈分配并只允许在堆上使用 new 来启动它 实现此目的的一种方法是将构造函数设为私有 并且只允许通过返回指针的静态方法进行构造 例如 class Foo public Foo static Foo createFoo r
  • 使用vba分割和重命名pdf文件

    我收到了一份包含多张工资单的合并文件 每张工资单上的特定位置都有一个特定的数字 我希望使用这个确切的数字作为每个文件名 例如37224 pdf 我尝试使用下面的 VBA 代码将工资单拆分并命名为单独的工资单 Option Explicit