実現したいこと
エクセルの<検索文字列>シートのA列に列挙されている検索文字列群(A1からA2、A3、、、に検索したい文字が入力されています)がwordファイルの文章中に使われているかそれぞれ検索し、出現ページ・行を<結果>シートに出力したい。
エラー・回避したいこと
wordファイルの文章中の検索対象文字列にルビがふられていた場合、無限ループになってしまう。
例)「回避」が検索文字列で、wordファイルの文章のどこかで「回避」という文字が使われており、さらに「かいひ」とwordのルビ機能を使ってルビがふられていた場合に、無限ループになって固まってしまいます。
いろいろ調べてみましたが自分の力では回避できなかったのでこちらで質問させていただきます。
コード
maxRowは<検索文字列>シートの最終行番号が格納
iRowは<結果>シートの結果を書き出す開始行番号が格納
vba
For i = 1 To maxRow wd = ThisWorkbook.Worksheets("検索文字列").Range("A" & i + 1).Value With wdApp.Selection .Find.Text = wd .Find.Forward = True .Find.MatchWholeWord = True .Find.MatchCase = True .Find.Wrap = wdFindContinue Do While .Find.Execute p = .Range.Information(wdActiveEndPageNumber) l = .Range.Information(wdFirstCharacterLineNumber) With ThisWorkbook.Worksheets("結果") .Range("A" & iRow) = p & "P、" & l & "行目" .Range("B" & iRow) = wd End With iRow = iRow + 1 Loop End With Next
環境
Excel 2016、Word 2016、VBA 7.1
まだ回答がついていません
会員登録して回答してみよう