1

Тема: применить tracked change только к разрывам строк

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

Sub accept_break()
Dim txt As Range
For Each txt In ActiveDocument.Text
If txt = "^b" Then
txt.Revisions.AcceptAll
End If
Next txt
End Sub

2

Re: применить tracked change только к разрывам строк

sylvio, Смотрим справку по VBA.
Кроме метода Revisions.AcceptAll, который принимает изменения глобально по всему документу есть еще метод Revisions.Accept, который позволяет принять отдельное изменение.
Revision.Accept Method
Accepts the specified tracked change, removes the revision mark, and incorporates the change into the document.
Принимает указанное отслеженное изменение, удаляет метку версии и включает изменение в документ.
Syntax
expression.Accept
expression   Required. A variable that represents a Revision object.

Example
This example accepts the next tracked change found if the change type is inserted text.
Пример
Этот пример принимает следующее отслеженное изменение если тип изменения  является вставленным текстом.

Set revNext = Selection.NextRevision(Wrap:=True)

If Not (revNext Is Nothing) Then
    If revNext.Type = wdRevisionInsert Then revNext.Accept
End If 

This example accepts all the tracked changes in the selection.
Этот пример принимает все отслеженные изменения внутри выделения

Dim revLoop As Revision
Dim rngSelection As Range

Set rngSelection = Selection.Range
For Each revLoop In rngSelection.Revisions
    revLoop.Accept
Next revLoop 

3

Re: применить tracked change только к разрывам строк

Boris_R, большое спасибо, но моих знаний не хватает применить совет для написания макроса, который принял бы все вставленные разрыва раздела или строки в документе.
На одно изменение макрос выглядит так

Sub accept_break()
dim text as string
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "^b"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.Range.Revisions.AcceptAll

End Sub

А как его зациклить, чтобы он прошел все разрывы, ума не приложу.

4

Re: применить tracked change только к разрывам строк

Нашел, как выборочно принять правку!

Sub accept_break()
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
Selection.Find.Text = "^b"
    While Selection.Find.Execute = True
        Selection.Range.Revisions.AcceptAll
    Wend
End Sub

Единственно, для больших документов не очень быстро.
Никто не подскажет, как искать только по внесенным изменениям, а не по всему тексту?