国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

使用VBA將大綱級(jí)別定義良好的單個(gè)Word文檔按指定的大綱樣式分割成多個(gè)文檔

這篇具有很好參考價(jià)值的文章主要介紹了使用VBA將大綱級(jí)別定義良好的單個(gè)Word文檔按指定的大綱樣式分割成多個(gè)文檔。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

我們知道,大綱級(jí)別定義良好的Word文檔可以輕松用Edraw master轉(zhuǎn)換成思維導(dǎo)圖。但是,對(duì)于一個(gè)極長的文檔,例如一本教材,直接導(dǎo)入Edraw master轉(zhuǎn)換后的思維導(dǎo)圖,因?yàn)閮?nèi)容過多,仍然很難閱讀。這時(shí)候,可以考慮分章節(jié)將長文檔分割成一個(gè)一個(gè)小文檔,再將小文檔導(dǎo)入Edraw master,轉(zhuǎn)換后的思維導(dǎo)圖就比較好用了。
下面的宏可以將一個(gè)極長的文檔分成每一個(gè)“標(biāo)題 4”段落及其所屬內(nèi)容構(gòu)成的短文檔。如果想按其他級(jí)別的段落來分割文檔,只需將宏中的變量styleName賦為其他值即可。(注:2024年1月26日修訂代碼,不再需要強(qiáng)制限定最后一頁有且只有一個(gè)樣式為styleName的段落
除了可以按樣式名分割文檔,直接按大綱級(jí)別(OutlineLevel)來分割文檔也是可以的,只需要將以下代碼中的If .ParagraphFormat.Style = styleName Then一行注釋掉,并取消下一行If .Paragraphs(1).OutlineLevel = OlLevel then的注釋,其中,OlLevel是指定大綱級(jí)別的變量。

Sub 按大綱級(jí)別分割文檔()

     Dim pos%, i%, rng As Range, titPara As Paragraph
     Dim subDoc As Document, mainDoc As Document, path$, fileName$, styleName$, olLevel%
     
     Set mainDoc = ActiveDocument '原文檔對(duì)象
     '指定的分割文檔的大綱級(jí)別或該級(jí)大綱的樣式名稱。只需指定一個(gè)
     styleName = "標(biāo)題 4" '指定的分割文檔的大綱級(jí)別對(duì)應(yīng)的段落的樣式名稱
     olLevel = 4 '指定的分割文檔的大綱級(jí)別
     
     '子文檔保存路徑,這里保存在主文檔所在目錄。注意路徑要以反斜杠結(jié)束
     path = mainDoc.path & "\"
     ' pages = mainDoc.ComputeStatistics(wdStatisticPages) '獲取文檔總頁數(shù)     
     i = 1
     
     Application.ScreenUpdating = False
     ' 某些版本的office執(zhí)行文檔創(chuàng)建關(guān)閉會(huì)出現(xiàn)操作無效錯(cuò)誤,忽略
     On Error Resume Next
     With Selection        
        ' 光標(biāo)移動(dòng)至文檔開頭
        .HomeKey unit:=wdStory        
        Do

            'If .ParagraphFormat.Style = styleName Then ' 根據(jù)樣式名定位原文檔分割位置
            If .Paragraphs(1).OutlineLevel = olLevel Then '根據(jù)大綱級(jí)別定位原文檔分割位置
                Set titPara = .Paragraphs(1)
                '一個(gè)數(shù)字序列號(hào)+指定大綱段落文本作為分割文件的文件名
                '也可每移動(dòng)一個(gè)標(biāo)題比較一下當(dāng)前標(biāo)題的大綱級(jí)別與指定樣式段落的大綱級(jí)別
                '如果當(dāng)前段落大綱級(jí)別較高,則將段落文本連接起來作為文件名的一部分,
                '這樣,從文件名即可看出該文件所屬的章節(jié)
                fileName = Mid(titPara.Range, 1, Len(titPara.Range) - 1) '去掉段落末尾的回車符號(hào)
                ' 如果原文檔標(biāo)題4是以序號(hào)加上頓號(hào)做前綴,在文件名中去掉前綴。沒有頓號(hào)pos會(huì)返回0
                pos = InStr(fileName, "、")
                ' 拼接文件名
                fileName = Format(i, "00000") & Mid(fileName, pos + 1)
                Set rng = .Bookmarks("\headinglevel").Range '獲取該標(biāo)題下所有內(nèi)容
                rng.Copy '復(fù)制內(nèi)容保存到分割的文檔中
                Set subDoc = Documents.Add '新建文檔保存分割出的內(nèi)容
                ' 指定分割的文檔中“正文”樣式的字體
                With subDoc.Styles("正文").Font
                    .NameFarEast = "宋體"
                    .NameAscii = "Source Code Pro"
                    .NameOther = "Source Code Pro"
                End With
                subDoc.Content.Paste '粘貼復(fù)制的內(nèi)容,源格式粘貼
                ' 將字體文件嵌入分割的文檔中一起保存,移植到缺少Source Code Pro字體的電腦也能正常顯示格式
                subDoc.EmbedTrueTypeFonts = True
                subDoc.SaveAs path & fileName & ".docx" '保存分割的文檔中
                subDoc.Close '關(guān)閉分割的文檔中
                mainDoc.Activate '激活原文檔,防止意外處理其他文檔
                i = i + 1
            End If
            pos = .Start '記錄當(dāng)前光標(biāo)位置
            .GoTo wdGoToHeading, wdGoToNext, 1 '光標(biāo)移動(dòng)到下一個(gè)標(biāo)題
            ' 當(dāng)光標(biāo)移動(dòng)到文檔最后一個(gè)標(biāo)題后,執(zhí)行上一行的.GoTo命令光標(biāo)位置不再發(fā)生變化,此時(shí)即完成了分割,可以退出循環(huán)
            If .Start = pos Then Exit Do
        Loop
    End With
    Set subDoc = Nothing
    Set mainDoc = Nothing
    Set rng = Nothing
    Debug.Print "共生成新文檔數(shù)量為" & (i - 1)
    Debug.Print "處理完成。"
    Application.ScreenUpdating = True
End Sub

上述代碼中只有一個(gè)技巧值得注意,那就是使用預(yù)定義書簽"\headinglevel"取得指定樣式段落所屬的全部內(nèi)容(包括子標(biāo)題、文本段落和圖片、表格等)。
Word中的預(yù)定義書簽有下面一些(來源:微軟官方文檔)文章來源地址http://www.zghlxwxcb.cn/news/detail-532924.html

Bookmark 說明
\Sel 當(dāng)前所選內(nèi)容或插入點(diǎn)。
\PrevSel1 發(fā)生編輯的最新選擇;轉(zhuǎn)到此書簽等效于運(yùn)行 一次 GoBack 方法。
\PrevSel2 倒數(shù)第二次編輯過的所選內(nèi)容;定位至該書簽相當(dāng)于運(yùn)行兩次 GoBack 方法。
\StartOfSel 當(dāng)前所選內(nèi)容的起點(diǎn)。
\EndOfSel 當(dāng)前所選內(nèi)容的終點(diǎn)。
\Line 當(dāng)前行或當(dāng)前所選內(nèi)容的首行。 如果插入點(diǎn)在本段非最后一行的行尾,該書簽包含完整的下一行。
\Char 當(dāng)前字符,它是插入點(diǎn)后面的字符(當(dāng)沒有選定內(nèi)容時(shí))或所選內(nèi)容的第一個(gè)字符。
\Para 當(dāng)前段,即包含插入點(diǎn)的段,或在選定多個(gè)段落時(shí)所選段落中的第一段。 請(qǐng)注意,如果插入點(diǎn)或所選內(nèi)容位于文檔的最后一段,則“\Para”書簽不包含段落標(biāo)記。
\Section 當(dāng)前節(jié),并可能包含節(jié)尾的分隔符。 當(dāng)前節(jié)包含插入點(diǎn)或所選內(nèi)容。 如果所選內(nèi)容包含多個(gè)節(jié),則“\Section”書簽為所選內(nèi)容中的第一節(jié)。
\Doc 活動(dòng)文檔中的全部內(nèi)容(文檔結(jié)尾處的段落標(biāo)記除外)。
\Page 當(dāng)前頁,并可能包含頁尾的分隔符。 當(dāng)前頁包含插入點(diǎn)。 如果當(dāng)前所選內(nèi)容包含多頁,則“\Page”書簽為所選內(nèi)容的第一頁。 注意,如果插入點(diǎn)或所選內(nèi)容位于文檔中的最后一頁,則“\Page”書簽不包含文檔結(jié)尾的段落標(biāo)記。
\StartOfDoc 文檔開頭。
\EndOfDoc 文檔結(jié)尾。
\Cell 表格中當(dāng)前的單元格,即包含插入點(diǎn)的單元格。 如果當(dāng)前所選內(nèi)容包含表中一個(gè)或多個(gè)單元格,則“\Cell”書簽為所選內(nèi)容的第一個(gè)單元格。
\Table 當(dāng)前表格,即包含插入點(diǎn)或所選內(nèi)容的表格。 如果所選內(nèi)容包含多個(gè)表格,則“\Table”書簽為所選內(nèi)容中完整的第一個(gè)表格(即使未選定完整的表格)。
\HeadingLevel 包含插入點(diǎn)或所選內(nèi)容的標(biāo)題,及其子標(biāo)題和文字。 如果當(dāng)前所選內(nèi)容為正文文字,則“\HeadingLevel”書簽包含上一個(gè)標(biāo)題以及該標(biāo)題包含的任何子標(biāo)題和文字。

到了這里,關(guān)于使用VBA將大綱級(jí)別定義良好的單個(gè)Word文檔按指定的大綱樣式分割成多個(gè)文檔的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • ppt技巧:如何將Word文檔大綱中導(dǎo)入到幻燈片中?

    ppt技巧:如何將Word文檔大綱中導(dǎo)入到幻燈片中?

    在PowerPoint中,將Word文檔的大綱導(dǎo)入到新的幻燈片是一種非常實(shí)用的技巧。以下是詳細(xì)的步驟: 首先,需要打開PowerPoint軟件并打開原始的幻燈片文件。 在PowerPoint的頂部【開始】菜單欄中,找到并點(diǎn)擊“新建幻燈片”按鈕,選擇下拉菜單。 在這個(gè)下拉菜單中,需要找到并點(diǎn)擊

    2024年04月15日
    瀏覽(23)
  • VBA-自定義面板,使用SQL查詢Excel數(shù)據(jù)

    VBA-自定義面板,使用SQL查詢Excel數(shù)據(jù)

    定制插件,實(shí)現(xiàn)用戶打開任意一個(gè)工作簿,寫sql對(duì)Excel中的數(shù)據(jù)進(jìn)行查詢 需求 篩選日期小于’2023-4-24’,按group字段分組,求和各分組下的銷售額,返回結(jié)果集新建工作表寫入 數(shù)據(jù)源 現(xiàn)在有兩個(gè)表, 一個(gè)用戶的銷售金額表,記錄用戶不同日期的銷售金額,其中date字段是日期

    2024年02月01日
    瀏覽(24)
  • VBA Excel自定義函數(shù)的使用 簡單的語法

    VBA Excel自定義函數(shù)的使用 簡單的語法

    一個(gè)簡單的教程,實(shí)現(xiàn)VBA自定義函數(shù)。 新建模塊 復(fù)制后面的代碼放進(jìn)來 函數(shù)的入口參數(shù)不定義,則認(rèn)為是一塊區(qū)域; 反之,如FindChar1 As String,則認(rèn)為是輸入的單值。 循環(huán)和分支如下例子,VB比較接近自然語言,英語有功底的話,寫起來還是比較舒服的。 以下實(shí)現(xiàn)的是一個(gè)

    2024年02月10日
    瀏覽(20)
  • VBA操作Word

    2024年04月13日
    瀏覽(18)
  • Word·VBA實(shí)現(xiàn)郵件合并

    Word·VBA實(shí)現(xiàn)郵件合并

    之前寫過的一篇使用《python實(shí)現(xiàn)word郵件合并》,本文為vba實(shí)現(xiàn)方法 域名可以使用中文,最終完成的word模板,wps操作步驟類似 在 Excel啟用宏的工作表 運(yùn)行以下代碼,讀取當(dāng)前工作表數(shù)據(jù),對(duì)模板word文檔,按工作表表頭名稱對(duì)同一域名寫入值,生成新文檔 參考資料: 《Rang

    2024年01月23日
    瀏覽(22)
  • 【PHPWrod】使用PHPWord導(dǎo)出word文檔

    目的:PHP通過PHPWord類庫導(dǎo)出文件為word。 開發(fā)語言及類庫:ThinkPHP、PHPWord 項(xiàng)目根目錄使用composer安裝PHPWord,安裝完成后會(huì)在vendor目錄下生成phpoffice文件夾,就是PHPWord類庫 前端代碼 PHP代碼 1、前端:先使用按鈕事件,在點(diǎn)擊事件里去請(qǐng)求后端返回的word文件的地址(這個(gè)地址是

    2024年02月09日
    瀏覽(23)
  • 使用OpenXML庫替換docx文檔(Word文檔)中的特定字段

    使用OpenXML庫替換docx文檔(Word文檔)中的特定字段

    在批量生成Word文檔的應(yīng)用中,最常見的需求莫過于替換掉文檔中的特定字段以生成新的文檔。利用OpenXML庫可輕松實(shí)現(xiàn)這一需求。 首先放出最簡單然而有bug的版本: 該版本的原理是遍歷word文檔中的每個(gè)段落,搜索段落中的每個(gè)文字字段對(duì)象,如果找到匹配的值就將其替換成

    2024年02月11日
    瀏覽(24)
  • Python和VBA批量提取Word中的表格

    表格在word文檔中常見的文檔元素之一。操作word文件時(shí)有時(shí)需要提取文件中多個(gè)表格的內(nèi)容到一個(gè)新的文件,甚至有時(shí)還會(huì)要提取題注信息。 今天,給大家分享兩種批量提取文檔中表格的兩種方法,分別是VBA法和Python法兩種。 1. 代碼實(shí)現(xiàn) VBA(Visual Basic for Applications)操作Wo

    2024年02月19日
    瀏覽(24)
  • VBA操作WORD(八)設(shè)置標(biāo)題格式(含主、副標(biāo)題)

    因?yàn)橹鳂?biāo)題和副標(biāo)題一般都是包含一兩句子的段落,所以參數(shù)直接傳入Paragraph。至于判斷主副標(biāo)題的規(guī)則則外面調(diào)用部分再做判斷。 調(diào)用主標(biāo)題和副標(biāo)題設(shè)置,并且在標(biāo)題下方增加一空行(注意,不是段后一行的高度,兩者不是一回事)。 主副標(biāo)題判斷的邏輯見注釋。 需要

    2024年02月15日
    瀏覽(28)
  • Java使用spire進(jìn)行word文檔的替換

    Java使用spire進(jìn)行word文檔的替換

    今天遇到一個(gè)需求,需要對(duì)word模板進(jìn)行替換制定的變量 在網(wǎng)上找了很多方案,做了很多的demo,下面就把我覺得比較簡單的一種分享給大家 本次的主角是:spire.doc Spire.Doc for .NET 是一款專門對(duì) Word 文檔進(jìn)行操作的 .NET類庫。這款控件的主要功能在于幫助開發(fā)人員輕松快捷高效

    2024年02月05日
    瀏覽(43)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包