如何使用vba宏(或python)找出Microsoft Word中确定单词的当前页码

时间:2014-09-18 13:07:35

标签: python vba ms-word word-vba

我有一项艰巨的任务,即纠正已翻译的书籍索引的页码,因此该索引上每个项目的出现的参考指向了错误的页码。

所以基本上我想制作一个VBA宏来搜索书中索引中的每个词,然后找出它们出现在哪里的页码,最后更新索引。

我想知道的是两件事:

  1. 您认为使用VBA是一个不错的选择还是耗时?如果您认为这不是一个坏主意,我如何获得确定单词的页码?

  2. 是否还有其他更好的方法可以使用Python来实现相同的结果,我感觉更舒服?

1 个答案:

答案 0 :(得分:0)

"页数"根据字体大小,纸张大小,行间距,边距等等,在文档中会有很大差异,因此在Word中尝试这种方法最多是不可靠的。请记住这一点。

请参阅this explanation及随后的评论:

  

Q值。我想循环浏览Word文档和每个页面中的所有页面。我该怎么做?

     

一个。你不能。 Word不是页面布局软件。它是一个文字处理器。它将文本视为滚动。每个文档都是一个长文本卷。

您可以与Find方法一起使用的一个hack,但需要注意可靠性当然:

Sub findpage()
Dim p As Long 'page number
Dim rngFound As Find
Dim searchText As String

searchText = "some text you want to find"

Set rngFound = ActiveDocument.Range.Find
    rngFound.Text = searchText
    rngFound.Execute

    If rngFound.Found Then
        p = rngFound.Parent.Information(wdActiveEndPageNumber)

    Else
        'not found
    End If

    MsgBox searchText & " found on page " & p

End Sub

实际上,为了您的目的,您必须调整此项,我只向您展示方法,您可以使用它来获取文档中特定搜索字词的页码。

VBA或Python(或某些TBD语言)的选择是你自己和你自己做的。