常规程序因为wps的 .docx
文件是基于段落和节的结构,而不是"物理页",所以无法直接按"第几页"删除
在普通程序里面无法读取到他的页码,但是在宏编程里面他能读取到页码,我们就根据宏编程来这样删除。
程序会自动打开选择要删除的文件夹里面的批量.wps文件,然后你只需要修改这个代码
要删除的页面 = Array(12, 4, 2, 1)
bash
Sub 批量删除指定页面()
Dim 文件夹路径 As String
Dim 文件名称 As String
Dim 当前文档 As Document
Dim 要删除的页面 As Variant
Dim 总页数 As Integer
Dim i As Integer
' 设置要删除的页面(从大到小排序)
要删除的页面 = Array(12, 4, 2, 1)
' 选择文件夹
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "请选择包含WPS文件的文件夹"
If .Show = -1 Then
文件夹路径 = .SelectedItems(1) & "\"
Else
MsgBox "未选择文件夹,操作取消。", vbInformation
Exit Sub
End If
End With
' 开始处理文件
文件名称 = Dir(文件夹路径 & "*.wps")
Do While 文件名称 <> ""
' 打开文档
Set 当前文档 = Documents.Open(FileName:=文件夹路径 & 文件名称)
总页数 = 当前文档.ComputeStatistics(wdStatisticPages)
' 循环删除指定页面
For i = LBound(要删除的页面) To UBound(要删除的页面)
' 检查页面是否存在
If 要删除的页面(i) <= 总页数 Then
On Error Resume Next ' 忽略可能的错误
' 特殊处理最后一页
If 要删除的页面(i) = 总页数 Then
' 将光标移到文档末尾前
Selection.EndKey Unit:=wdStory
' 选中到页首(即最后一页内容)
Selection.HomeKey Unit:=wdPage, Extend:=wdExtend
Else
' 定位到指定页面
Selection.GoTo What:=wdGoToPage, Which:=wdGoToAbsolute, Count:=要删除的页面(i)
' 选中整页
Selection.Bookmarks("\Page").Range.Select
End If
' 删除选中内容
Selection.Delete
On Error GoTo 0 ' 恢复错误处理
' 更新总页数
总页数 = 当前文档.ComputeStatistics(wdStatisticPages)
End If
Next i
' 保存并关闭文档
当前文档.Save
当前文档.Close
Set 当前文档 = Nothing
' 处理下一个文件
文件名称 = Dir()
Loop
MsgBox "所有WPS文件处理完成!", vbInformation
End Sub