2017-01-23 14 views
0

Так что я долгое время пытался сделать любую автоматизацию слов, но длинный рассказ, мне нужно создать рабочий документ, содержащий список. Первый уровень - это числа, а второй - буквы, в основном имитирующие формат нумерации по умолчанию, но не могут понять.VB.NET Список номеров MS-WORD с отпечатками символов

Код, который я до сих пор просто продолжает численный шаблон на отступ.

Вот код, который у меня есть до сих пор, и экранный снимок того, что мне нужно. Благодаря

Public NotInheritable Class Utilities 
Public Shared Sub CreateDocument() 
    'Local Variable Declaration 
    Dim application As New Microsoft.Office.Interop.Word.Application 
    Dim document As Microsoft.Office.Interop.Word.Document 
    Dim range As Microsoft.Office.Interop.Word.Range 

    application.Visible = True 

    'Add a new document 
    document = application.Documents.Add() 

    'Add Header and Footer 
    For Each Item As Microsoft.Office.Interop.Word.Section In document.Sections 
     'Header 
     Dim header As Microsoft.Office.Interop.Word.Range = Item.Headers(Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary).Range 
     header.Fields.Add(header, Microsoft.Office.Interop.Word.WdFieldType.wdFieldPage) 
     header.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter 
     header.Text = "Header" 
     header.Font.Name = "Arial" 
     header.Font.Size = 10.0 
     header.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorRed 

     'Footer 
     Dim footer As Microsoft.Office.Interop.Word.Range = Item.Footers(Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary).Range 
     footer.Fields.Add(footer, Microsoft.Office.Interop.Word.WdFieldType.wdFieldPage) 
     footer.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter 
     footer.Text = "Footer" 
     footer.Font.Name = "Arial" 
     footer.Font.Size = 10.0 
     footer.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorRed 
    Next 

    'Setup Default Range 
    range = document.Range() 
    range.Style = document.Styles("No Spacing") 
    range.Font.Name = "Arial" 
    range.Font.Size = 10.0 
    range.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorBlack 

    range.Text = "Line 1" & vbCrLf 
    range.Text &= "Line 2" & vbCrLf & vbCrLf 

    Dim paragraph As Microsoft.Office.Interop.Word.Paragraph = range.Paragraphs.Add 
    paragraph.Range.Text = "First Numbered Line:" 
    paragraph.Range.ListFormat.ApplyNumberDefault(Microsoft.Office.Interop.Word.WdDefaultListBehavior.wdWord10ListBehavior) 
    paragraph.Outdent() 

    Dim list = paragraph.Range.ListFormat.ListTemplate.ListLevels(1).NumberStyle = Microsoft.Office.Interop.Word.WdListNumberStyle.wdListNumberStyleLowercaseLetter 

    paragraph.Range.Paragraphs.Add() 
    paragraph.Range.Paragraphs(1).Range.Text = "Second Character Line" 
    paragraph.Range.Paragraphs(1).Range.ListFormat.ApplyListTemplate(document.ListTemplates(1), True, list) 
    paragraph.Range.Paragraphs(1).Indent() 

    paragraph.Range.InsertParagraphAfter() 
End Sub 

End Class

Что мне нужно: enter image description here

+0

проще записать макрос в Word и проверить сгенерированный код (это то, что я сделал бы, чтобы дать вам ответ в любом случае). Это один из свойств списка, но он не может его запомнить. – Slai

ответ

0

Таким образом, после еще пару часов возиться с этим я нашел решение.

Private Shared Sub SetupParagraphsTemplates(Application As Microsoft.Office.Interop.Word.Application) 
    ParagraphTemplate = Application.ListGalleries(Microsoft.Office.Interop.Word.WdListGalleryType.wdOutlineNumberGallery).ListTemplates(2) 
    ParagraphTemplate.ListLevels(1).NumberStyle = Microsoft.Office.Interop.Word.WdListNumberStyle.wdListNumberStyleArabic 
    ParagraphTemplate.ListLevels(2).NumberFormat = "%2." 
    ParagraphTemplate.ListLevels(2).NumberStyle = Microsoft.Office.Interop.Word.WdListNumberStyle.wdListNumberStyleLowercaseLetter 
    ParagraphTemplate.ListLevels(3).NumberStyle = Microsoft.Office.Interop.Word.WdListNumberStyle.wdListNumberStyleArabic 
    ParagraphTemplate.ListLevels(3).NumberFormat = "%3." 
End Sub 

Основного метод Применить шаблон:

paragraph.Range.ListFormat.ApplyListTemplate(ParagraphTemplate) 

Затем мы добавляющие уровни текста вы будете использовать вызов, как это:

‘Text 
    range.Paragraphs.Add() 
    range.Paragraphs(range.Paragraphs.Count).Range.Text = "Test" 
    range.Paragraphs(range.Paragraphs.Count).Range.SetListLevel(2) 

Надеется, что это помогает кто-то другое тоже!

 Смежные вопросы

  • Нет связанных вопросов^_^