|
本帖最后由 bluesky_0 于 2022-11-16 11:08 编辑
Private Sub CommandButton4_Click()
'每四页PDF保存第一页,删除2-4页
Dim pdApp As Acrobat.AcroApp
Dim pdDoc As Acrobat.AcroPDDoc
Dim pdPage As Acrobat.AcroPDPage
Dim jso As Object
Dim watermark As String, watermarkID As Integer, watermarkfile As String
Dim II As Integer, pagenum As Integer, delnum As Integer, ROW_DEL As Integer
Set pdApp = CreateObject("AcroExch.App")
Set pdDoc = CreateObject("AcroExch.PDDoc")
cropfile = ThisWorkbook.Path & "\" & Sheet1.Range("A" & 2) '需要DEL的文件名
pdDoc.Open (cropfile) '打开PDF文件
Set jso = pdDoc.GetJSObject
pagenum = pdDoc.GetNumPages() '得到PDF页数
For II = 1 To pagenum \ 4 '循环次数,循环一次删除一次
delnum = II '
OK = jso.DeletePages(delnum, delnum + 2) '删除 从delnum 到 delnum+2页
'原理:PDF页面的计数是从0到N-1,所以代码里的0页是实际的第一页,代码的N-1页是实际的最后一页;
'第一次循环是 删除1到1+2页,
'这时候,留下代码层面的第0页(实际的第一页)是我们需要的,代码层面的第1页是下一份(4页一份)的第一页也要留下
'所以下一次循环是删除第2到2+2页()
'明白以上的逻辑,你知道怎么更改参数来解决每隔不同页删除不需要页面的问题
Next
pdDoc.Save 1, cropfile & ".PDF" '保存文件(原文件名,包括扩展名+.PDF),覆盖不提示;相当于另存为新文件
pdDoc.Close '关闭文件
Set pdDoc = Nothing
Set pdApp = Nothing
MsgBox "OK" '提示框OK
End Sub
|
|