我是新来的VBA和我想放在一起的宏在Excel中。该宏用于在Word文档中搜索特定的文本字符串,并返回其所在的页码(即该列会在文档的第#页上显示“###”)。Excel的VBA从找到的文本得到页码在Word
我似乎是非常接近我想要的东西。宏找到文本,我可以让它告诉我它找到/没有找到它。但是,当我用代码运行它返回页码时,它告诉我索引超出范围。我相信困难在于我对对象及其属性的有限理解。
任何帮助表示赞赏!
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不作为“选择”。我也尝试用wdNumberOfPagesInDocument替换wdActiveEndPageNumber,以查看它是否为特定值并获得相同的错误消息。
究竟是什么线是给错误?当我尝试复制这个问题时,它对我来说运行良好。 – Mikegrann
我收到“运行时错误‘4608’:值超出范围”是在哪里设置单元格等于页码 – user6718894
那一行线什么被传递到函数在该行的值? ? – Mikegrann