Призрачный стиль в слове - PullRequest
0 голосов
/ 30 мая 2018

У меня есть документ Word, в котором я запускаю макрос для поиска стиля Regular.

Мой код ниже:

If styleExisted = False Then
    For Each oRange1 In ActiveDocument.StoryRanges
        If oRange1.Characters.count > 0 And found = False Then
            oRange1.Select

            With Selection.Find
                .Style = "Regular"                  
            End With

            Selection.Find.Execute
            If Selection.Find.found = True Then
                test = Selection.range.Text

                found = True
                styleExisted = True
            End If
        End If
    Next oRange1
End If

Однако макрос дает мнеложное утверждение о том, что в документе присутствует контент со стилем.Я не могу найти никакого содержимого, когда использую диалоговое окно «Найти» с выбранным стилем.

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

При сохранении файла в формате .docx и проверке файла document.xml я обнаружил следующее содержимое.

<w:tc>
    <w:tcPr>
        <w:tcW w:w="1074" w:type="pct"/>
    </w:tcPr>
    <w:p w:rsidR="004B7F7E" w:rsidRPr="006E4FD7" w:rsidRDefault="004B7F7E" w:rsidP="006E4FD7">
        <w:pPr>
            <w:pStyle w:val="TableHead"/>
            <w:spacing w:after="0"/>
            <w:jc w:val="left"/>
            <w:rPr>
                <w:rStyle w:val="Regular"/>
                <w:sz w:val="24"/>
                <w:szCs w:val="24"/>
            </w:rPr>
        </w:pPr>
        <w:r w:rsidRPr="006E4FD7">
            <w:rPr>
                <w:bCs/>
                <w:sz w:val="24"/>
                <w:szCs w:val="24"/>
            </w:rPr>

Как я могу обойти этот ложный положительный результат?

Это происходит только для некоторых документов, что действительно сбивает с толку.

РЕДАКТИРОВАТЬ: Когда я добавил нормальный контент из другогодокумент и поместите его в начало, первый блок в новом контенте выбирается.

Кроме того, в начале был бы некоторый текст-заполнитель (из пользовательского шаблона) в стиле Regular;это было бы удалено, когда документ был подготовлен.

1 Ответ

0 голосов
/ 30 мая 2018

Я решил проблему с помощью приведенного ниже кода:

'' remove empty paragraphs
With Selection.Find
    .Text = "^13{2,}"
    .Replacement.Text = "^p"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
End With
'' remove empty paragraphs

Спасибо @GSerg за ваш указатель на глиф абзаца.

РЕДАКТИРОВАТЬ: Я все еще получал ложные срабатывания при использовании .Style;поэтому мне пришлось изменить свой код, как показано ниже, с подстановочным знаком <*>:

With Selection.Find
    .Font.Italic = True
    .Font.Color = 32768
    .Text = "<*>"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = True
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...