Word中VBA提取人名所在的页码

这两天在整理万千人的《昨天军统》的博客内容,整理有1200多页。为方便查找各历史人物所在的位置,我把WORD中写了一小段VBA代码,用于提取其所在的页码。
效果很不错,几乎达到了我所想要的效果。

演示

代码备存如下:

点击查看代码
Function SearchNameinPages(name$) As String
Dim o As Paragraph
Dim curPage$, prevPage$, result$

If Len(name) <= 1 Then Exit Function '太短的不检索

Application.ScreenUpdating = False  '禁用屏幕更新可极大加快速度
ActiveDocument.Paragraphs(1).Range.Select

For Each o In ActiveDocument.Paragraphs
If InStr(o.Range.Text, name) > 0 Then
   o.Range.Select
  curPage = Selection.Information(wdActiveEndAdjustedPageNumber) '得到当前选择的段落所在的页码
  If curPage <> prevPage Then '有时一页中多个段落出现,只保留一个页码
    result = result & " " & curPage '用空格分隔
    prevPage = curPage
  End If
End If
Next o

Selection.EndKey Unit:=wdStory '跳到文件末尾
Application.ScreenUpdating = True
SearchNameinPages = result
End Function

Sub SearchIt()
'在自定义界面中 指定该宏的快捷键为ALT+CTRL+N
Dim str$, FunctResult$
str = InputBox("请输入要查询的人名,不短于两个字", "输入:")
If str = "False" Then Exit Sub
FunctResult = SearchNameinPages(str)
ActiveDocument.Paragraphs.Add
Selection.TypeText Text:=str & vbCrLf & FunctResult
End Sub
posted @ 2025-09-09 23:14  dingxianghuan  阅读(15)  评论(0)    收藏  举报