这两天在整理万千人的《昨天军统》的博客内容,整理有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.SelectFor Each o In ActiveDocument.Paragraphs
If InStr(o.Range.Text, name) > 0 Theno.Range.SelectcurPage = Selection.Information(wdActiveEndAdjustedPageNumber) '得到当前选择的段落所在的页码If curPage <> prevPage Then '有时一页中多个段落出现,只保留一个页码result = result & " " & curPage '用空格分隔prevPage = curPageEnd If
End If
Next oSelection.EndKey Unit:=wdStory '跳到文件末尾
Application.ScreenUpdating = True
SearchNameinPages = result
End FunctionSub 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