none
Пропустить track changes в word документе RRS feed

  • Вопрос

  • Здравствуйте.
    Есть в  документе word метки которые макросом заменяются на названия. Например метка <NUMBER находится скриптом и заменяется на TEST-001. Но когда включена опция track changes , то значение подставляется и метка отображается рядом как зачёркнутая. Т.е. получается вот так: TEST-001<NUMBER. Проблема в том что при повторном запуске макроса метка находится снова и макрос дублирует названия.
    Вот код который ищет метки:

    Private Function FindSearchMark(ByVal rngStory As Range) As Boolean
        With rngStory.Find         
            .ClearFormatting
            .Wrap = wdFindStop
            .Forward = True
            .MatchCase = False
            .MatchWildcards = False
            .MatchWholeWord = False
            .Execute FindText:="<"
            FindSearchMark = .found        
            ....
        End With
       
    End Function

    Вопрос в том как пропустить при поиске изменения отслеживаемые вордом ?  

    24 сентября 2014 г. 6:17

Все ответы

  • Возможно нашел решение , но не могу довести до ума. Переделал немного вызывающую функцию:

    Private Sub SearchAndReplaceInStory(ByVal regArray As Variant, ByVal rngStory As Word.Range, ByVal storyType As Integer)
        Do While FindSearchMark(rngStory)
            rngStory.Select
            rngStory.Collapse Direction:=wdCollapseEnd
            If rngStory.Revisions.count = 0 Then
                HandleSelectedSearchMark regArray, storyType
            End If
        Loop
    End Sub


    Но макрос ведёт себя как то странно...
    Если я не ставлю точку прерывания на строке: 
    Do While FindSearchMark(rngStory)
            ....

    всё работает. После первого выполнения макроса rngStory.Revisions.count = 1 для метки. Но если я убираю breakpoint с этой строки и ставлю например на HandleSelectedSearchMark regArray, storyType
     макрос перестаёт работать. Т.е. Он работает как до изменения и rngStory.Revisions.count
    всегда 0. То же самое если вообще не ставлю точки прерывания. Пробовал сохранять , переоткрывать документ. Не помогает. Получается что макрос работает как ожидается только в режиме отладки и то только если breakpoint в нужном месте.
    Раньше с макросами для ворда и VBA никогда не приходилось работать. Поэтому понятия не имею с чем это может быть связано. Есть ли какие либо идеи ?


    • Изменено S_A_V_e 26 сентября 2014 г. 7:32 Ошибка
    26 сентября 2014 г. 7:30