日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【VBA】在word中写多级列表

發布時間:2023/12/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【VBA】在word中写多级列表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近幫我姐個忙,把excel中統計好的數據寫到word中并設置成多級列表。
我沒有學過vba,不太清楚怎么直接用vba設置多級列表。所以我用了一個取巧的方法。
我先根據下面兩篇文章設置好了word多級列表的樣式。
具體步驟就是先按照第一個鏈接設置多級列表,然后根據第二個鏈接的后半部分對樣式進行下一步修改。
設置word多級列表樣式
多級列表樣式設置+樣式的進一步修改

設置好之后就開始vba的部分了。新建一個宏:

//這里是在word中讀取excel數據的部分,我是照著網上的教程寫的,不知道為什么效果不太理想,忽略忽略,復制數據這一步可以手動實現 Set cnt = CreateObject("excel.application") Set tb = cnt.workbooks.Open("C:\Users\freya\Desktop\周報\工作報告表-匯總.xlsm") cnt.Visible = False tb.worksheets("Sheet4").Cells(1, 1).Value.Copy Selection.Paste//在最后插入一個空行,這是因為我是通過下一行是空行判斷這是二級列表的結尾 Set file = ActiveDocument Set para = file.Paragraphs(file.Paragraphs.Count) para.Range.InsertParagraphAfterDim num num = 0//遍歷文件中的每一段 For Each para In file.Paragraphs //前四行是模板的固定表頭,所以不需要做任何處理If num < 4 Thennum = num + 1 //匹配每一行的內容,設置不同的樣式, Chr13)代表空行ElseIf para.Range.Text Like "*【本周工作】*" Thenpara.Style = "小標題"ElseIf para.Range.Text Like "*【下周計劃】*" Thenpara.Style = "小標題"ElseIf para.Range.Text = Chr(13) Thennum = numElseIf para.Range.Text Like "*黨委:*" Thenpara.Style = "一級標題"ElseIf para.Range.Text Like "*工會:*" Thenpara.Style = "一級標題"Elsepara.Style = "二級標題"//這里是因為excel中每一行的結尾都是句號,要求是每個二級列表的最后一行是句號,其他行是分號。我這里先統一改成分號para.Range.Characters(para.Range.Characters.Count - 1) = ";"End IfNext//從文件的第一段遍歷到倒數第二段,如果下一行是空行且本行的最后一個字符是‘;’,那么就改成‘。’ //這是為什么要在一開始添加一個空行,也是為什么只遍歷到倒數第二段 For i = 1 To file.Paragraphs.Count - 1Set para = file.Paragraphs(i)If para.Next.Range.Text = Chr(13) ThenIf para.Range.Characters(para.Range.Characters.Count - 1) = ";" Thenpara.Range.Characters(para.Range.Characters.Count - 1) = "。"End IfEnd If Next//另存為 & 不保存修改并關閉 ActiveDocument.SaveAs2 "C:\Users\freya\Desktop\周報\周報匯總.docx" ActiveDocument.Close savechanges:=wdDoNotSaveChanges

加注釋加到一半才發現注釋的格式不對,我還是不習慣vba的注釋格式。如果有要使用代碼的朋友記得修改。

最終實現的效果就是:
把數據從excel復制過來后:

代碼處理后:

因為我姐這報告的結構是兩個多級列表,通過上面的代碼只能實現一個多級列表的排版。所以需要手動調整第二個多級列表中一級標題的編號。
先選中“三、黨委:”這一行,點擊一級標題那個樣式,然后再回到那一行右鍵選擇重新開始于一,這樣第二個多級列表的一級標題編號就正常了。

網上關于vba實現多級列表的代碼好少,如果有大神愿意指點一下就再好不過了

總結

以上是生活随笔為你收集整理的【VBA】在word中写多级列表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。