MS Word VBA将Word文档的嵌套列表转换为HTML嵌套列表

时间:2016-12-19 07:09:48

标签: vba word-vba

使用MS Word VBA如何将Word文档中的以下嵌套列表转换为html嵌套列表。我知道在Word-VBA中ActiveDocument.Lists是所有列表的集合,ListParagraphs是列表中列表项的集合。但我无法遍历这些集合以获取Word文档中以下嵌套列表的句柄:

Word文档嵌套列表

enter image description here

HTML嵌套列表

<ol>
  <li>Test1</li>
  <li>Test2</li>
    <ul>
       <li>Test2a</li>
       <li>Test2b</li>
    </ul>
  <li>Test3</li>
  <li>Test4</li>
</ol>

更新

使用下面的用户@TimWilliams中的代码,我得到以下结果,实际上将子列表视为单独的列表2(如下所示)。但我需要知道列表2确实是列表1的嵌套列表。我怎样才能实现这个目标?

List: 1       Level: 1      Label: 1.     Text: Test1
List: 1       Level: 1      Label: 2.     Text: Test2
List: 1       Level: 1      Label: 3.     Text: Test3
List: 1       Level: 1      Label: 4.     Text: Test4
List: 2       Level: 2      Label: a)     Text: Test2a
List: 2       Level: 2      Label: b)     Text: Test2b

1 个答案:

答案 0 :(得分:1)

应该让你开始:

Sub Tester()

    Dim doc As Document, l As List, lp, i, x

    Set doc = ActiveDocument

    For x = 1 To doc.Lists.Count

        Set l = doc.Lists(x)

        For i = 1 To l.ListParagraphs.Count
            Set lp = l.ListParagraphs(i).Range
            Debug.Print "List: " & x, _
                        "Level: " & lp.ListFormat.ListLevelNumber, _
                        "Label: " & lp.ListFormat.ListString, _
                        "Text: "; Replace(lp.Text, vbCr, "")

        Next i
    Next x

End Sub

编辑:打开一个新文档并在示例列表中运行上面的代码,这是我得到的输出。

List: 1       Level: 1      Label: 1.     Text: Test1
List: 1       Level: 1      Label: 2.     Text: Test2
List: 1       Level: 2      Label: a.     Text: Test2a
List: 1       Level: 2      Label: b.     Text: Test2b
List: 1       Level: 1      Label: 3.     Text: Test3
List: 1       Level: 1      Label: 4.     Text: Test4

似乎我们的列表以某种方式被创建得不同:我使用tab缩进我的子列表项和Shift-tab以返回顶级列表。