Запуск слова VBA макрос на тексте в двух словах - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть макрос, который преобразует изменения дорожки в подчеркивание или зачеркивание, и это происходит во всем текстовом документе.Однако мне бы хотелось, чтобы он выполнялся только при отслеживании изменений только в пределах раздела документа, найденного между первым тегом и вторым тегом (скажем, между словами «Начало» и «Конец»).Я не хочу, чтобы этот макрос вносил изменения где-либо, кроме этих двух тегов.Другими словами, если я запускаю этот макрос, только изменения отслеживания в этих двух тегах должны быть изменены в зависимости от макроса, а остальная часть документа должна сохранять изменения отслеживания без изменений.

Пожалуйста, дайте мне знать, если вы можете помочь мне изменить этот макрос на основе вышеуказанного требования.

Вот что у меня есть, но оно работает на весь документ.

Sub FormatRevisions()
Dim rev As Revision, txt As String, r As Long, ran As Range

'First switch off TrackChanges, else each of your reformattings will become a revision again
ActiveDocument.TrackRevisions = False

'***Now cycle through revisions, identify type of change
For Each rev In ActiveDocument.Revisions
    Select Case rev.Type
        Case wdRevisionDelete
            'secure "deleted" text as well as its position
            txt = rev.Range.Text
            r = rev.Range.Start
            'accept the revision to make the markup disappear
            rev.Accept
            'now type the text formatted as strikethrough at the position of the old text
            Set ran = ActiveDocument.Range(r, r)
            With ran
                .Text = txt
                .Font.StrikeThrough = 1
            End With
        Case wdRevisionInsert
            Set ran = rev.Range
            'accept the revision to make the markup disappear
            rev.Accept
            'now type the text formatted as underlined at the position of the old text
            ran.Font.Underline = 1
    End Select
Next rev
End Sub

1 Ответ

0 голосов
/ 25 сентября 2018

Попробуйте:

Sub FormatRevisions()
Application.ScreenUpdating = False
Dim Rvn As Revision, Rng As Range
'First switch off TrackChanges, else each of your reformattings will become a revision again
ActiveDocument.TrackRevisions = False
With ActiveDocument.Range
  'Find the defined range
  With .Find
    .Text = "Beginning*Ending"
    .MatchWildcards = True
    .Execute
  End With
  If .Find.Found = True Then

    '***Now cycle through revisions, identify type of change
    For Each Rvn In .Revisions
      With Rvn
        Select Case .Type
          Case wdRevisionDelete
            Set Rng = .Range
            'Reject the revision to make the markup disappear
            .Reject
            'now format the text as strikethrough
            Rng.Font.StrikeThrough = True
          Case wdRevisionInsert
            Set Rng = .Range
            'Accept the revision to make the markup disappear
            .Accept
            'now format the text as underlined
            Rng.Font.Underline = wdUnderlineSingle
        End Select
      End With
    Next
  End If
End With
Application.ScreenUpdating = True
End Sub

Преимуществом вышеупомянутого подхода является сохранение форматирования удаленного и добавленного текста.

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