2017-01-23 18 views
0

私は任意の単語自動化を試みてから長い時間がかかりましたが、長い話は短いので、リストを含む作業文書を作成する必要があります。最初のレベルは数字で、2番目は文字で、基本的にはデフォルトの番号形式を模倣していますが、それは分かりません。VBOME 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 

エンドクラス

私が必要なもの: enter image description here

+0

Wordでマクロを記録し、生成されたコードを確認する方が簡単です(これは、私があなたに答えを与えるために行うものです)。これはリストのプロパティの1つですが、今はそれを覚えていません。 – 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 

主な方法は、テンプレートを適用します。これは、あまりにも他の誰かを助け

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

希望:

paragraph.Range.ListFormat.ApplyListTemplate(ParagraphTemplate) 

その後、我々はあなたがこのような呼び出しを使用することになり、テキストのレベルを追加!

関連する問題