Пропустить track changes в word документе
От: SAVe  
Дата: 24.09.14 07:00
Оценка:
Здравствуйте.
Есть в документе 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

Вопрос в том как пропустить при поиске изменения отслеживаемые вордом ?
Re: Пропустить track changes в word документе
От: Vi2 Удмуртия http://www.adem.ru
Дата: 24.09.14 08:26
Оценка:
Здравствуйте, SAVe, Вы писали:

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


Навскидку, текст будет зачёркнутым и, следовательно, не должен рассматриваться в качестве метки.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[2]: Пропустить track changes в word документе
От: SAVe  
Дата: 24.09.14 08:34
Оценка:
Здравствуйте, Vi2, Вы писали:

Vi2>Здравствуйте, SAVe, Вы писали:


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


Vi2>Навскидку, текст будет зачёркнутым и, следовательно, не должен рассматриваться в качестве метки.


Я пробовал добавить в поиск .Font.StrikeTrough = False. Но ворд не считает это зачёркнутым текстом и метка всё равно находится. Он становится зачёркнутым только если я явно применю стиль к тексту. Внешне метка выглядит так же (зачеркнутой), но ещё появляется нотификация о том что я внёс изменение в документ. В этом случае метка пропускается поиском.
Re[3]: Пропустить track changes в word документе
От: Vi2 Удмуртия http://www.adem.ru
Дата: 24.09.14 10:10
Оценка:
Здравствуйте, SAVe, Вы писали:

SAV>Я пробовал добавить в поиск .Font.StrikeTrough = False. Но ворд не считает это зачёркнутым текстом и метка всё равно находится. Он становится зачёркнутым только если я явно применю стиль к тексту. Внешне метка выглядит так же (зачеркнутой), но ещё появляется нотификация о том что я внёс изменение в документ. В этом случае метка пропускается поиском.


Range незачёркнутого и зачёркнутого должен отличаться. Вот в данном случае есть поле Revisions, которое в одном случае не имеет элементов, а во втором — имеет.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[4]: Пропустить track changes в word документе
От: SAVe  
Дата: 26.09.14 06:45
Оценка:
Здравствуйте, Vi2, Вы писали:


Vi2>Range незачёркнутого и зачёркнутого должен отличаться. Вот в данном случае есть поле Revisions, которое в одном случае не имеет элементов, а во втором — имеет.


Спасибо за подсказку. Я сделал так (поменял в вызывающей функции):
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 никогда не приходилось работать. Поэтому понятия не имею с чем это может быть связано. Есть ли какие либо идеи ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.