Макрос VB Word для установки стиля списка маркеров - PullRequest
0 голосов
/ 23 января 2019

Я устанавливаю некоторый текст в виде списка, и он всегда отображается жирными черными точками. Я изо всех сил пытаюсь найти, как установить списки, начинающиеся с "-" вместо точек.

Настройка списка:

oDoc.Paragraphs.Add() '17
iStartIndex = oDoc.Paragraphs.Count
oDoc.Paragraphs.Last.Range.Text = strUmfang
iEndIndex = oDoc.Paragraphs.Count

oDoc.Range( Start := oDoc.Paragraphs(iStartIndex).Range.Start, End := 
oDoc.Paragraphs.Last.Range.End ).Select()

Selection.Range.ListFormat.ApplyBulletDefault

Я пытался установить с: ListGalleries.Item (3) .ListTemplates (1) .ListLevels (1) .NumberFormat = ChrW (61485)

Он продолжает отображаться в виде черных точек. Какие-нибудь советы ? Спасибо ^^

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Мне удалось записать макрос, который настраивал новый стиль списка, используя символ тире.Чтобы создать тест, я создал пустой документ с 5 абзацами текста:

enter image description here

Затем из записанного макроса я создал отдельный Sub для инициализации моего нового ListTemplate для стиля списка, который использует тире:

Private Function CreateCustomListStyle(ByRef oDoc As Document) As ListTemplate
    With ListGalleries(wdBulletGallery).ListTemplates(1).ListLevels(1)
        .NumberFormat = ChrW(8210)
        .TrailingCharacter = wdTrailingTab
        .NumberStyle = wdListNumberStyleBullet
        .NumberPosition = InchesToPoints(0.5)
        .Alignment = wdListLevelAlignLeft
        .TextPosition = InchesToPoints(0.75)
        .TabPosition = wdUndefined
        .ResetOnHigher = 0
        .StartAt = 1
        With .Font
            .Bold = wdUndefined
            .Italic = wdUndefined
            .StrikeThrough = wdUndefined
            .Subscript = wdUndefined
            .Superscript = wdUndefined
            .Shadow = wdUndefined
            .Outline = wdUndefined
            .Emboss = wdUndefined
            .Engrave = wdUndefined
            .AllCaps = wdUndefined
            .Hidden = wdUndefined
            .Underline = wdUndefined
            .Color = wdUndefined
            .Size = wdUndefined
            .Animation = wdUndefined
            .DoubleStrikeThrough = wdUndefined
            .Name = "Calibri"
        End With
        .LinkedStyle = ""
    End With
    ListGalleries(wdBulletGallery).ListTemplates(1).Name = ""
    Set CreateCustomListStyle = ListGalleries(wdBulletGallery).ListTemplates(1)
End Function

И, наконец, мой тестовый код для выбора всех абзацев и создания списка:

Option Explicit

Sub test()
    Dim oDoc As Document
    Set oDoc = ThisDocument

    oDoc.Range.Select       'selects all paragraphs
    Selection.Range.ListFormat.ApplyBulletDefault

    '--- create a list template that uses "-"
    Dim dashTemplate As ListTemplate
    Set dashTemplate = CreateCustomListStyle(oDoc)

    Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:= _
        dashTemplate
End Sub

С результатом:

enter image description here

0 голосов
/ 23 января 2019

Когда вы получили ListGalleries.Item(3).ListTemplates(1).ListLevels(1).NumberFormat = ChrW(61485) в результате своей записи, вы, вероятно, изменили определение стиля, но никогда не применяли его.

Если вы снова сделаете ту же запись и изучите ее, вы, вероятно, обнаружите, что она ассоциируется со стилем. Строка, похожая на .LinkedStyle = "List Paragraph", но, возможно, на немецком.

Добавьте эту часть к существующему макросу, а затем, после выбора соответствующих частей вашего документа, выполните

Selection.Style = ListGalleries.Item(3).ListTemplates(1).ListLevels(1).LinkedStyle
...