【发布时间】:2014-10-28 19:07:29
【问题描述】:
我在 VBA 中循环浏览一个 Word 文档。通过每遍我想搜索一个不同的单词,所以每遍都需要从文件的开头开始。我正在使用的当前方法是这样,但它似乎搜索第一个单词,当它到达文件末尾时,移动到第二个单词,并且只在文件末尾搜索,依此类推剩下的单词。
'my array of words is called myKeywords
For x = LBound(myKeywords) To UBound(myKeywords)
PageNumbers(x) = ""
'start from start of file here somehow.
With oWord.Selection.Find
.ClearFormatting()
.Text = myKeywords(x)
.Wrap = False
.Forward = True
Do While .Execute = True
If PageNumbers(x) = "" Then
PageNumbers(x) = oWord.Selection.Information(Word.WdInformation.wdActiveEndAdjustedPageNumber)
Else
PageNumbers(x) = PageNumbers(x) & ", " & oWord.Selection.Information(Word.WdInformation.wdActiveEndAdjustedPageNumber)
End If
Loop
End With
Next
感谢任何见解。
编辑 1
我已经阅读了this,但我没有看到任何可以帮助我的东西。 Wrap 看起来会有所帮助,但如果我设置 wrap = True,我会收到错误“值超出范围”,并且我看不出 .wrap 如何设置超出范围的内容。
编辑 2
我尝试设置一个范围并在循环结束时重置它,但到目前为止没有成功。
'my array of words is called myKeywords
Range = oWord.Selection
For x = LBound(myKeywords) To UBound(myKeywords)
PageNumbers(x) = ""
'start from start of file here somehow.
With Range.Find
.ClearFormatting()
.Text = myKeywords(x)
.Wrap = False
.Forward = True
Do While .Execute = True
If PageNumbers(x) = "" Then
PageNumbers(x) = oWord.Selection.Information(Word.WdInformation.wdActiveEndAdjustedPageNumber)
Else
PageNumbers(x) = PageNumbers(x) & ", " & oWord.Selection.Information(Word.WdInformation.wdActiveEndAdjustedPageNumber)
End If
Loop
'I've also tried several other variations of Range = other things to get this to work.
Range = Range.Select
End With
Next
编辑 3
'my array of words is called myKeywords
Range = oWord.ActiveDocument.Range(Start:=oWord.Selection.Start, [End]:=oWord.Selection.End)
For x = LBound(myKeywords) To UBound(myKeywords)
'start from start of file here somehow.
With oWord.Selection.Find
PageNumbers(x) = ""
.ClearFormatting()
.Text = myKeywords(x)
.Wrap = False
.Forward = True
Do While .Execute = True
If PageNumbers(x) = "" Then
PageNumbers(x) = oWord.Selection.Information(Word.WdInformation.wdActiveEndAdjustedPageNumber)
Else
PageNumbers(x) = PageNumbers(x) & ", " & oWord.Selection.Information(Word.WdInformation.wdActiveEndAdjustedPageNumber)
End If
Loop
Range.Select()
End With
Next
【问题讨论】:
-
你要做什么?你不能使用查找和替换方法吗?如果有帮助,我可以给你一个样品。
-
不是查找和替换。我试图给这个程序一个单词数组,如果该单词存在于文档中,它会向另一个文档写入多少次,以及该单词在哪个页面上。