使用MS Word VBA如何将Word文档中的以下嵌套列表转换为html嵌套列表。我知道在Word-VBA中ActiveDocument.Lists
是所有列表的集合,ListParagraphs
是列表中列表项的集合。但我无法遍历这些集合以获取Word文档中以下嵌套列表的句柄:
Word文档嵌套列表:
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
答案 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以返回顶级列表。