首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用文本样式的VBA宏macro重置编号列表

用文本样式的VBA宏macro重置编号列表
EN

Stack Overflow用户
提问于 2014-10-08 21:44:27
回答 1查看 1.3K关注 0票数 0

我正在尝试做一个VBA宏来创建一个word文档.目前,我在正确设置列表时遇到了问题。我希望列表索引链接到我的2个标题类型。就像这样:

代码语言:javascript
运行
复制
1. Header1
 1.1. Header2
2. Header1
 2.1 Header2

问题是,尽管我已经包含了.ResetOnHigher属性,但我的第2级列表并没有被重置。这意味着我得到的结果如下:

代码语言:javascript
运行
复制
1. Header1
 1.1. Header2
2. Header1
 1.2 Header2

谁能告诉我我做错了什么,我能做些什么来解决这个问题?

下面是我使用的代码的一部分:

代码语言:javascript
运行
复制
(...)

With ListGalleries(wdOutlineNumberGallery).ListTemplates(1).ListLevels(1)
   .NumberFormat = "%1."
   .TrailingCharacter = wdTrailingTab
   .NumberStyle = wdListNumberStyleArabic
   .NumberPosition = CentimetersToPoints(0)
   .Alignment = wdListLevelAlignLeft
   .TextPosition = CentimetersToPoints(0.63)
   .TabPosition = wdUndefined
   .StartAt = 1
End With

With ListGalleries(wdOutlineNumberGallery).ListTemplates(1).ListLevels(2)
   .NumberFormat = "%1.%2."
   .TrailingCharacter = wdTrailingTab
   .NumberStyle = wdListNumberStyleArabic
   .NumberPosition = CentimetersToPoints(0.63)
   .Alignment = wdListLevelAlignLeft
   .TextPosition = CentimetersToPoints(1.4)
   .TabPosition = wdUndefined
   .ResetOnHigher = 1
   .StartAt = 1
End With

With myDoc
'Heading 1
    .Styles(wdStyleHeading1).Font.Name = "Arial"
    .Styles(wdStyleHeading1).Font.Size = 24
    .Styles(wdStyleHeading1).Font.Color = wdColorBlack
    .Styles(wdStyleHeading1).Font.Bold = True
    .Styles(wdStyleHeading1).ParagraphFormat.LineSpacingRule = wdLineSpaceSingle
    .Styles(wdStyleHeading1).ParagraphFormat.SpaceAfter = 12
    .Styles(wdStyleHeading1).LinkToListTemplate _
        ListTemplate:=ListGalleries(wdOutlineNumberGallery).ListTemplates(1), _
        ListLevelNumber:=1

'Heading 2
    .Styles(wdStyleHeading2).Font.Name = "Arial"
    .Styles(wdStyleHeading2).Font.Size = 18
    .Styles(wdStyleHeading2).Font.Color = wdColorBlack
    .Styles(wdStyleHeading2).Font.Bold = True
    .Styles(wdStyleHeading2).ParagraphFormat.LineSpacingRule = wdLineSpaceSingle
    .Styles(wdStyleHeading2).ParagraphFormat.SpaceAfter = 12
    .Styles(wdStyleHeading2).LinkToListTemplate _
        ListTemplate:=ListGalleries(wdOutlineNumberGallery).ListTemplates(1), _
        ListLevelNumber:=2
End With

(...)

'Loop through sheets
For I = 2 To WS_Count - 1

'Check if sheet is to be included and if so past its content to word
If ThisWorkbook.Worksheets(I).Shapes("Enable").OLEFormat.Object.Value = 1 = True Then

'Insert Group Title if Group is different
 If ThisWorkbook.Worksheets(I).Cells(1, 1).Value = ThisWorkbook.Worksheets(I - 1).Cells(1, 1).Value = False Then

    myDoc.Paragraphs.Last.Range.Style = myDoc.Styles("Heading 1")
    myDoc.Paragraphs.Last.Range.Text = ThisWorkbook.Worksheets(I).Range("A1")
    myDoc.Paragraphs.Last.Range.InsertParagraphAfter

End If

'Insert Page Title
myDoc.Paragraphs.Last.Range.Style = myDoc.Styles("Heading 2")
myDoc.Paragraphs.Last.Range.Text = ThisWorkbook.Worksheets(I).Range("A2")
myDoc.Paragraphs.Last.Range.InsertParagraphAfter

'Insert Tables
Call ExcelRangeToWord(myDoc, ThisWorkbook.Worksheets(I).Range("range1"), 1)
myDoc.Paragraphs.Last.Range.InsertParagraph
Call ExcelRangeToWord(myDoc, ThisWorkbook.Worksheets(I).Range("range2"), 2)
myDoc.Paragraphs.Last.Range.InsertParagraph

'Insert Page Break on last paragraph
myDoc.Paragraphs.Last.Range.InsertBreak (wdPageBreak)

End If

(...)
EN

回答 1

Stack Overflow用户

发布于 2015-09-17 06:04:26

我也遇到了同样的问题,我花了整整一天的时间来解决这个问题。问题是,您正在创建样式,并在每个样式中指向List+Listlevel。当您使用这些样式时,每个样式都在创建ist自己的列表。所以解决办法是反过来做。

您必须使用所有ist列表级别创建新的列表模板,并且在每个列表级别中必须指向样式如下:

ActiveDocument.ListTemplates("LT").ListLevels(1).LinkedStyle = "Style1“

当您想使用这种特定格式时,可以通过以下方式插入:

ListTemplate:=ActiveDocument.ListTemplates("LT"),.Range.ListFormat.ApplyListTemplateWithLevel ContinuePreviousList:=True,ApplyLevel:=1

玩得开心=

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26266978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档