Определите тип стиля маркированного списка с помощью макроса VBA - PullRequest
1 голос
/ 02 июля 2019

Мне нужно написать макрос VBA для идентификации и удаления типов стилей, которые были применены к символу маркера в маркированном списке.

В приведенной ниже части document.xml у нас есть маркер с примененным стилем 'italic'.

<w w:rsidR="000450E5" w:rsidRPr="00A4560A" w:rsidRDefault="000450E5" w:rsidP="0009336F">
    <w:pPr>
        <w:pStyle w:val="ListBullet"/>
            <w:rPr>
            <w:i/>
            <w:lang w:val="es-ES"/>
        </w:rPr>
    </w:pPr>
    <w:r w:rsidRPr="00A4560A">
        <w:rPr>
            <w:lang w:val="es-ES"/>
        </w:rPr>
        <w:t xml:space="preserve">el marco legislativo y </w:t>
    </w:r>

в приведенном выше примере <w:i/> - стиль курсива. Таким образом, код document.cxml, связанный с добавленным маркером типа 'italic', выглядит следующим образом:

<tps:liFormat><tps:style type="italic">—<tps:t/></tps:style></tps:liFormat>

Что мне нужно сделать, так это создать макрос VB, чтобы удалить из документа теги, примененные к маркерам.

Ниже мой код. Я просто смог определить списки пуль. Я все еще не могу найти способ проверить применяемый тип стиля.

Public Sub main()
    Dim objDocument As Word.Document
    Dim objParagraph As Word.Paragraph

    Set objDocument = Word.ActiveDocument

    For Each objParagraph In objDocument.Paragraphs
        If objParagraph.Range.ListFormat.ListType = WdListType.wdListBullet Then
            If objParagraph.Range.ListFormat.StyleType = 'Italic' then  //Is there something like thid?
            //remove to set to normal
            End If
        End If
    Next objParagraph

End Sub

Может ли кто-нибудь помочь мне определить и удалить тип стиля, добавленный в маркер? Заранее спасибо.

1 Ответ

1 голос
/ 03 июля 2019

Следующий код находит каждый абзац со стилем ListBullet, затем определяет диапазон как метку абзаца в конце абзаца, а затем удаляет курсив. Знак абзаца хранит курсивное форматирование, которое изменяет маркер.

For Each objParagraph In objDocument.Paragraphs
    Set objRange = objParagraph.Range
    If objRange.ListFormat.ListType = wdListBullet Then
        objRange.Collapse Direction:=wdCollapseEnd
        objRange.MoveStart Unit:=wdCharacter, Count:=-1
        objRange.Font.Italic = False
    End If
Next objParagraph
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...