簡體   English   中英

MS Word VBA將Word文檔的嵌套列表轉換為HTML嵌套列表

[英]MS Word VBA to convert a Word document's nested list to an HTML nested list

使用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

應該讓您開始:

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返回了頂級列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM