Я пытаюсь получить информацию о ревизиях в текстовых документах моих пользователей, но мой код VBA, похоже, не возвращает правильное свойство para.style при изменении вида ревизии.
Из того, что я могу сказать, похоже, что свойство .style «играет в догонялки» и не отражает ожидаемое значение при запуске сценария в реальном времени, и я вижу ожидаемое значение при остановке в строке печати в режиме отладки. Возможно, есть способ гарантировать, что изменение вида ревизии «установится» перед выполнением следующей строки в моем коде? Я пробовал несколько экземпляров DoEvents, но безрезультатно.
Можно воспроизвести наблюдаемое мной поведение, выполнив следующее:
- Создайте / измените документ, чтобы первый абзац был style = Heading1, а второй абзац - style = body.
- Включите изменения дорожки и удалите заголовок абзаца, а затем добавьте частичную редакцию абзаца к основному абзацу (вставка или удаление).
Запустите эту подпрограмму из этого документа:
Sub test()
For Each rev In ActiveDocument.Revisions
ActiveDocument.Windows(1).View.RevisionsFilter.Markup = wdRevisionsMarkupNone
Debug.Print "STYLE: [" & rev.Range.Paragraphs(1).Style & "], TEXT: [" & rev.Range.Paragraphs(1).Range & "]"
ActiveDocument.Windows(1).View.RevisionsFilter.Markup = wdRevisionsMarkupAll
Next rev
End Sub
Вы увидите, что на распечатке отладки будет неправильно отображаться «заголовок 1» для стиля или обеих первых ревизий (удаленный заголовок и ревизия во втором абзаце). То есть Я считаю, что стиль должен показывать «Body» для обеих этих ревизий. Это основано на моем рассмотрении состояния документа и диапазона редакций, когда я приостанавливаю код отладки в строке «print.debug», а также на выводе «text», который печатается во всех случаях.
И я просто добавлю здесь, что мое «боковое» изменение представлений в каждом цикле является допустимым и полезным механизмом, поскольку мой фактический полный код делает намного больше вещей внутри этого цикла for, и поэтому я хотел этого стиль чтения должен быть «атомарным» и «возвращать» состояние просмотра после того, как я выполню чтение. В конечном счете, дело в том, что то, что я хочу сделать, должно «работать», даже если, вероятно, существует более эффективный способ организации вещей.