Excel VBA从Word中找到的文本中获取页码
我是VBA新手,我正在尝试在Excel中组合一个宏。此宏用于搜索Word文档中的特定文本字符串,并返回其所在的页码(即,该列将显示“####在文档的#页上找到”) 我似乎很接近我想要的。宏找到文本,我可以让它告诉我它找到了/没有找到它。但是,当我使用返回页码的代码运行它时,它告诉我索引超出范围。我确信困难在于我对物体及其性质的理解有限 感谢您的帮助Excel VBA从Word中找到的文本中获取页码,vba,excel,macros,Vba,Excel,Macros,我是VBA新手,我正在尝试在Excel中组合一个宏。此宏用于搜索Word文档中的特定文本字符串,并返回其所在的页码(即,该列将显示“####在文档的#页上找到”) 我似乎很接近我想要的。宏找到文本,我可以让它告诉我它找到了/没有找到它。但是,当我使用返回页码的代码运行它时,它告诉我索引超出范围。我确信困难在于我对物体及其性质的理解有限 感谢您的帮助 Sub OpenWordDoc() Set wordapp = CreateObject("word.Application"
Sub OpenWordDoc()
Set wordapp = CreateObject("word.Application")
wordapp.Visible = True
wordapp.Activate
wordapp.Documents.Open "filename.docx"
Set findRange = Sheet1.Range("D4:D8")
For Each findCell In findRange.Cells
Set rngFound = wordapp.ActiveDocument.Range.Find
rngFound.Text = findCell.Value
rngFound.Execute
If rngFound.Found Then
findCell.Offset(columnOffset:=1) = rngFound.Parent.Information(wdActiveEndPageNumber)
Else
findCell.Offset(columnOffset:=1) = findCell.Value
End If
Next findCell
wordapp.Quit
Set wordapp = Nothing
End Sub
编辑1:我在一台完全不同的计算机和不同版本的Word和Excel上试过这个。同样的消息会弹出。错误是这个片段-rngFound.Parent.Information(wdActiveEndPageNumber)-我认为rngFound.Parent不是一个“选择”。我还尝试将wdActiveEndPageNumber替换为wdNumberOfPagesInDocument,只是想看看它是否是特定的值,并得到了相同的错误消息。尝试以下方法:
Sub OpenWordDoc()
Dim wordapp As Word.Application
Dim findRange As Excel.Range
Dim findCell As Excel.Range
Dim rngFound As Word.Range
Set wordapp = CreateObject("word.Application")
wordapp.Visible = True
wordapp.Activate
wordapp.Documents.Open "filename.docx"
Set findRange = Sheet1.Range("D4:D8")
For Each findCell In findRange.Cells
Set rngFound = wordapp.ActiveDocument.Range
With rngFound.Find
.Text = findCell.Value
.Execute
End With
If rngFound.Find.Found Then
findCell.Offset(columnOffset:=1) = rngFound.Information(wdActiveEndPageNumber)
Else
findCell.Offset(columnOffset:=1) = findCell.Value
End If
Next findCell
wordapp.Quit
Set rngFound = Nothing
Set findCell = Nothing
Set findRange = Nothing
Set wordapp = Nothing
End Sub
希望这有助于究竟哪一行给出了错误?当我尝试复制该问题时,它对我来说运行正常。我得到“运行时错误'4608':值超出范围”它位于我将单元格设置为等于哪一行的页码的行上?传递到该行上的函数中的值是什么?findCell.Offset(ColumnPoster:=1)=rngFound.Parent.Information(wdActiveEndPageNumber)-我相信错误来自范围.Parent.Information部分您的工作表上是否有某种类型的数据验证,或其他可能导致赋值失败的内容?请仔细检查函数返回的值,以查看函数是否失败,或赋值是否为:
Debug.Print rngFound.Parent.Information(wdActiveEndPageNumber)
我必须为Word打开对象库,但这完全做到了!谢谢!谢谢!我知道问题与Excel与Word对象的混淆有关。