Для моей работы я должен найти все экземпляры стиля в 40-словных документах (.doc). Когда я получу текст, я хочу записать его в ячейке на моем листе excel (.xls).VBA получить все вхождения стиля в документ Word из Excel
С кодом, который я написал, я могу получить первый экземпляр этого стиля, но я не могу получить следующий, он переходит в бесконечный цикл, и теперь я не понимаю почему (в каждом файле имеется около 10 вхождений).
Не могли бы вы рассказать мне, где я ошибаюсь?
Я хочу от: Before running the macro к тому, что: After running the macro
Вот мой код:
'==================================================================
' Declarations
'==================================================================
Dim ObjWord As Object ' Word application object
'==================================================================
' Macro
'==================================================================
Public Sub Macro()
Dim row As Integer
row = 9 'first available row
Set ObjWord = CreateObject("word.application")
Worksheets("Sheet 2").Activate
While (Cells(row, 2).Value <> "End of file list")
Set file = ObjWord.documents.Open(ThisWorkbook.path & ".\" & Cells(row, 1).Hyperlinks(1).Address)
Set currentRange = file.Range
currentRange.Find.ClearFormatting
currentRange.Find.Forward = True
currentRange.Find.Text = ""
currentRange.Find.Style = "MyStyle"
bFind = currentRange.Find.Execute
Do While bFind 'here is the endless loop
row = row + 1
StyleValue= currentRange.Text 'I get stuck with the first value :-(
Rows(row).EntireRow.Insert
Cells(row, 2).Value = StyleValue
bFind = currentRange.Find.Execute
Loop
file.Close
row = row + 1 ' next File
Wend
ObjWord.Quit
End Sub
Как 'find' реагирует зависит в определенной степени от того, где найденный текст расположен по отношению к определенным структурам документов. Особенно важно, когда задействованы ячейки таблицы. Другая потенциальная проблема, которую я вижу в вашем коде, - это VBA (и мы), не будучи уверенным, когда она имеет дело с объектами Excel и когда с объектами Word. «Диапазон» используется в обоих, например, как «rows» и «columns». Вам нужно дать некоторые разъяснения, чтобы они могли четко ответить на этот вопрос. –