簡體   English   中英

如何使用其大綱將MS Word DOCX讀入子文檔(使用VBA)?

[英]How to Read MS Word DOCX using its Outline into subdocuments (using VBA)?

我正在嘗試使用Word-VBA從主DOCX的每個部分創建多個Word子文檔。

主DOCX打印布局

在此處輸入圖片說明

主要DOCX大綱查看所有級別

在此處輸入圖片說明

主要DOCX大綱視圖四級

在此處輸入圖片說明

輸出示例如下:

示例輸出在這里

子文檔(DOCX)的名稱與上述相似(包括本節第一個單詞中使用的樣式的名稱)。 內容包含一些格式豐富的文本,例如某些單詞可能以粗體顯示,斜體顯示等。

感謝您對如何使用Word-VBA進行評論。

以下代碼是問題的核心。 它使用Word編輯/查找/轉到/標題命令在大綱級別中遞增。 但是, 當涉及多個段落標記時,我無法找到一種在大綱層之間選擇所有文本的方法 我想將此富文本復制到子文檔之一。

Sub Goto_Outline_Levels()
    ActiveWindow.ActivePane.View.Type = wdPageView
    Selection.HomeKey Unit:=wdStory
    Selection.GoTo What:=wdGoToHeading, Which:=wdGoToNext, Count:=1, Name:=""
    Selection.GoTo What:=wdGoToHeading, Which:=wdGoToNext, Count:=1, Name:=""
    Selection.GoTo What:=wdGoToHeading, Which:=wdGoToNext, Count:=1, Name:=""
    Selection.GoTo What:=wdGoToHeading, Which:=wdGoToNext, Count:=1, Name:=""
    Selection.GoTo What:=wdGoToHeading, Which:=wdGoToNext, Count:=1, Name:=""
End Sub

這樣的技巧是使用Range對象。 與選擇不同,您的代碼可以與多個范圍一起使用。 因此,您可以將標題區域的起點保存在一個Range中,將終點(下一標題部分的起點)保存在另一個Range中,並將子文檔的內容保存在第三個Range中。

Sub CreateSubDocsPerHeadingStyle()
    Dim doc As word.Document
    Dim rngStart As word.Range
    Dim rngEnd As word.Range
    Dim rngSubDoc As word.Range

    Set doc = ActiveDocument
    Selection.HomeKey Unit:=wdStory
    Do
        Selection.GoTo What:=wdGoToHeading, Which:=wdGoToNext, Count:=1, Name:=""
        Set rngStart = Selection.Range
        Selection.GoTo What:=wdGoToHeading, Which:=wdGoToNext, Count:=1, Name:=""
        Set rngEnd = Selection.Range
        rngEnd.Collapse wdCollapseStart
        If rngEnd.End = rngStart.Start Then
            'At the last heading section
            rngEnd.End = doc.content.End
        End If
        Set rngSubDoc = doc.Range(rngStart.Start, rngEnd.End)
        rngSubDoc.Select
        rngSubDoc.Subdocuments.AddFromRange rngSubDoc
        rngEnd.Select
    Loop While rngEnd.End <> doc.content.End
End Sub

暫無
暫無

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

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