Неправильное свойство para.style после изменения вида ревизии - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь получить информацию о ревизиях в текстовых документах моих пользователей, но мой код VBA, похоже, не возвращает правильное свойство para.style при изменении вида ревизии.

Из того, что я могу сказать, похоже, что свойство .style «играет в догонялки» и не отражает ожидаемое значение при запуске сценария в реальном времени, и я вижу ожидаемое значение при остановке в строке печати в режиме отладки. Возможно, есть способ гарантировать, что изменение вида ревизии «установится» перед выполнением следующей строки в моем коде? Я пробовал несколько экземпляров DoEvents, но безрезультатно.

Можно воспроизвести наблюдаемое мной поведение, выполнив следующее:

  1. Создайте / измените документ, чтобы первый абзац был style = Heading1, а второй абзац - style = body.
  2. Включите изменения дорожки и удалите заголовок абзаца, а затем добавьте частичную редакцию абзаца к основному абзацу (вставка или удаление).
  3. Запустите эту подпрограмму из этого документа:

    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, и поэтому я хотел этого стиль чтения должен быть «атомарным» и «возвращать» состояние просмотра после того, как я выполню чтение. В конечном счете, дело в том, что то, что я хочу сделать, должно «работать», даже если, вероятно, существует более эффективный способ организации вещей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...