寻求可将Word文档页脚页码转为正文纯文本的VBA宏
实现Word页脚页码转纯文本/正文插入纯文本页码的VBA宏
方案1:将页脚中的页码域转换为纯文本
你之前的代码添加的是Word自带的页码域(动态关联页码),要把这些域转成固定的纯文本,用下面的宏:
Sub ConvertFooterPageNumbersToText() Dim sec As Section Dim footer As HeaderFooter Dim field As Field ' 遍历文档所有节 For Each sec In ActiveDocument.Sections ' 处理主页脚 Set footer = sec.Footers(wdHeaderFooterPrimary) If footer.Exists Then ' 遍历页脚内所有域,找到页码域就解除链接(转纯文本) For Each field In footer.Range.Fields If field.Type = wdFieldPage Then field.Unlink End If Next field End If ' 若文档设置了单独的首页页脚,一并处理 Set footer = sec.Footers(wdHeaderFooterFirstPage) If footer.Exists Then For Each field In footer.Range.Fields If field.Type = wdFieldPage Then field.Unlink End If Next field End If Next sec End Sub
运行后,页脚里的动态页码会变成固定的数字文本,不再随文档页数变化而更新。
方案2:直接在正文每页插入纯文本页码
如果是想把页码作为纯文本放到正文内容里(比如每页末尾),用这个宏:
Sub InsertPageNumbersAsTextInBody() Dim doc As Document Dim pageNum As Integer Dim range As range Set doc = ActiveDocument Application.ScreenUpdating = False ' 关闭屏幕刷新,加快运行速度 ' 遍历文档所有页码 For pageNum = 1 To doc.ComputeStatistics(wdStatisticPages) ' 定位到当前页的末尾位置 Set range = doc.GoTo(What:=wdGoToPage, Name:=pageNum) Set range = range.GoTo(What:=wdGoToBookmark, Name:="\page") range.Collapse Direction:=wdCollapseEnd ' 插入纯文本页码,可自行调整前后的空格/格式 range.InsertAfter Text:=" " & pageNum & " " ' 若需要换行,取消下面一行注释 ' range.InsertParagraphAfter Next pageNum Application.ScreenUpdating = True ' 恢复屏幕刷新 End Sub
这段代码会直接在每页末尾插入固定的数字页码,完全是纯文本格式,和域无关。
内容的提问来源于stack exchange,提问作者Lee N
相关产品推荐
相关产品推荐

