我正在以编程方式更改某些样式并添加多级编号以实现“标题,子标题......等”结构体。一切正常,风格正确,编号通过各个层次。
当样式单独使用时,它们排列在我想要的位置,但是当使用编号代码时,从某处放入1.52cm的缩进并覆盖样式的缩进代码。
样式代码在编号代码之后运行,因此应覆盖我遗漏的任何默认值。
如果有人可以帮忙,我的代码如下。
Private Sub doSReport()
Dim application As Word.Application = Globals.ThisAddIn.Application
Dim numberlist = application.ListGalleries(WdListGalleryType.wdOutlineNumberGallery).ListTemplates(1)
With numberlist
.Name = ""
With .ListLevels(1)
.NumberFormat = "%1."
.NumberStyle = WdListNumberStyle.wdListNumberStyleArabic
.NumberPosition = 0
.TextPosition = 21
.TabPosition = 21
.ResetOnHigher = 0
.StartAt = 1
.LinkedStyle = "Heading 1"
End With
With .ListLevels(2)
.NumberFormat = "%1.%2."
.NumberStyle = WdListNumberStyle.wdListNumberStyleArabic
.NumberPosition = 0
.TextPosition = 29
.TabPosition = 29
.ResetOnHigher = 1
.StartAt = 1
.LinkedStyle = "Heading 2"
End With
With .ListLevels(3)
.NumberFormat = "%1.%2.%3"
.NumberStyle = WdListNumberStyle.wdListNumberStyleArabic
.NumberPosition = 0
.TextPosition = 36
.TabPosition = 36
.ResetOnHigher = 2
.StartAt = 1
.LinkedStyle = "Heading 3"
End With
End With
With Doc.Styles(Word.WdBuiltinStyle.wdStyleHeading1)
.NameLocal = "Chapter Title"
.Font.Bold = True
.Font.Size = 16
.Font.Name = "Calibri"
.Font.Color = WdColor.wdColorDarkYellow 'RGB(36, 95, 144)
.LinkStyle = True
.QuickStyle = True
.Visibility = False
.Priority = 3
.ParagraphFormat.LeftIndent = 0
.ParagraphFormat.FirstLineIndent = 21.54
.ParagraphFormat.SpaceBefore = 12
.ParagraphFormat.SpaceAfter = 6
.ParagraphFormat.PageBreakBefore = True
.LinkToListTemplate(numberlist, 1)
End With
With Doc.Styles(Word.WdBuiltinStyle.wdStyleHeading2)
.NameLocal = "Chapter Subheading"
.Font.Bold = True
.Font.Size = 11
.Font.Name = "Calibri"
.Font.Color = RGB(36, 95, 144)
.LinkStyle = True
.QuickStyle = True
.Visibility = False
.Priority = 4
.ParagraphFormat.LeftIndent = 0
.ParagraphFormat.FirstLineIndent = -29
.LinkToListTemplate(numberlist, 2)
End With
With Doc.Styles(Word.WdBuiltinStyle.wdStyleHeading3)
.Font.Bold = True
.Font.Italic = True
.Font.Size = 11
.Font.Name = "Calibri"
.Font.Color = RGB(36, 95, 144)
.LinkStyle = True
.QuickStyle = True
.Visibility = False
.Priority = 5
.ParagraphFormat.LeftIndent = 0
.ParagraphFormat.FirstLineIndent = -36
.LinkToListTemplate(numberlist, 3)
End With
答案 0 :(得分:1)
编号样式缩进会覆盖paragaph样式缩进 - 总是,无论它应用的顺序如何。因此,您需要使用ListTemplate中指定的缩进。
与设置编号的对话框一样,有三个设置可确定数字和文本的位置:NumberPosition
,TabPosition
和TextPosition
。您可以在对象模型帮助中阅读更多内容,并与对话框中的设置进行比较。
请记住,Word会在Points中计算这些(以及许多其他)设置。当然,我们以厘米(或英寸)为单位思考。 Word通过提供转换功能(例如CentimetersToPoint
(反之,以及InchesToPoints
和反向)使我们更容易。请注意,这些只能在项目引用Word COM库时使用("早期绑定")。
Sub ListTemplatePlusHeadingIndents()
Dim doc As word.Document = ActiveDocument
Dim lt As word.ListTemplate = doc.ListTemplates.Add(True, "LT_Test")
Dim sH1 As word.style = doc.styles(wdStyleHeading1)
Dim sH2 As word.style= doc.styles(wdStyleHeading2)
Dim indentLvlBase as Double = 0
Dim indentLvl1 as Double = Word.CentimetersToPoints(0.7)
Dim indentLvl2 as Double = 2 * indentLvl1
With lt.ListLevels(1)
.LinkedStyle = sH1
.NumberPosition = indentLvlBase
.TabPosition = indentLvl1
.TextPosition = indentLvl1
End With
With lt.ListLevels(2)
.LinkedStyle = sH2
.NumberPosition = indentLvl1
.TabPosition = indentLvl2
.TextPosition = indentLvl2
End With
End Sub