|
VBA删除空页5941错误代码
请高手老师帮帮看看,是什么问题,谢谢大家了!
代码如下:(代码由论坛老师提供)
Sub 检查和删除WORD文档末空白页()
Dim IsDelete As Boolean
Dim PageCount As Long
Dim rRange As Range
Dim iInt As Integer, DelCount As Integer
Dim tmpstr As String
IsDelete = True
PageCount = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
For iInt = 1 To PageCount
'超过PageCount退出
If iInt > PageCount Then Exit For
'取每一页的内容
If iInt = PageCount Then
Set rRange = ActiveDocument.Range(Start:=ActiveDocument.GoTo(wdGoToPage, wdGoToAbsolute, iInt).Start)
Else
Set rRange = ActiveDocument.Range(Start:=ActiveDocument.GoTo(wdGoToPage, wdGoToAbsolute, iInt).Start, End:=ActiveDocument.GoTo(wdGoToPage, wdGoToAbsolute, iInt + 1).Start)
End If
If Replace(rRange.Text, Chr(13), "") = "" Or Replace(rRange.Text, Chr(13), "") = Chr(12) Then
'tmpstr = tmpstr & "第 " & iInt & " 页是空页" & vbCrLf
tmpstr = "第 " & iInt & " 页后是空页"
'删除
If IsDelete Then
DelCount = DelCount + 1
'删除空白页
rRange.Text = Replace(rRange.Text, Chr(13), "")
rRange.Text = ""
'重算页数
PageCount = ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
If iInt <> PageCount Then
'页删除后,页码变化,重新检查当前页
iInt = iInt - 1
Else
'最后一个空页
Set rRange = ActiveDocument.Range(Start:=ActiveDocument.GoTo(wdGoToPage, wdGoToAbsolute, PageCount - 1).Start, End:=ActiveDocument.GoTo(wdGoToPage, wdGoToAbsolute, PageCount + 1).Start)
'如果是分页符,删除上一页中的换页符
If InStr(1, rRange.Text, Chr(12)) > 0 Then
rRange.Characters(InStr(1, rRange.Text, Chr(12))) = ""
Else
'没有分页符,通过选中后删除,最好不这样做,如果判断错误,有误删除的风险
Set rRange = ActiveDocument.Range(Start:=ActiveDocument.GoTo(wdGoToPage, wdGoToAbsolute, iInt).Start)
rRange.Select
Selection.Delete
End If
Exit For
End If
End If
End If
Next
If 1 = 1 Or Not IsDelete Then
If tmpstr = "" Then
MsgBox "没有空页", vbInformation + vbOKOnly
Else
MsgBox tmpstr, vbInformation + vbOKOnly
End If
Else
If DelCount > 0 Then MsgBox "删除空页 " & DelCount, vbInformation + vbOKOnly
End If
End Sub
VBA删除空页5941错误代码.rar
(13.25 KB, 下载次数: 17)
|
|