Word vba:把從excel拷貝來的文字粘貼到word中並進行排版(添加多級列表+添加目錄+設置標題副標題作者及段落樣式)

2021-02-23 兔兔vba

此代碼可能運行幾次才能成功

重啟一下電腦容易一次成功

Excel中的文字如下(A列和B列)

結果如下:

vba代碼如下:

Sub把從excel拷貝來的文字粘貼到word中並進行排版() '主程序,此代碼在word中執行

Dim a As Object '定義一個object型變量

Dim m, n, i As Long '定義3個long型整數變量

Set a = CreateObject("Excel.Application") ' 調用excel軟體

a.Visible = True 'excel軟體前臺可見

a.WorkBooks.Open FileName:="C:\Users\p503406\Desktop\根據excel中的文字一

鍵生成滿足格式要求的word文檔.xlsx" '打開excel文件《根據excel中的文字一鍵生成

滿足格式要求的word文檔(未完成).xls》

m = a.ActiveSheet.Rows.Count '數一下 excel當前工作表共有多少行(空白行和

非空白行都數)

n = a.ActiveSheet.Cells(m, 1).End(3).Row '數一下 excel當前工作表共有多少

行有內容

For i = 1 To n Step 1

a.ActiveSheet.Cells(i, 2).Copy '複製excel表格中i行2列單元格中的內容

Word.Application.Activate '激活word軟體

Word.Application.Selection.PasteAndFormat (wdFormatPlainText) '把

excel表格中i行2列單元格中的內容以純文本格式粘貼到word文檔中,每一個單元格中

的內容在word中變成一個段落

If a.ActiveSheet.Cells(i, 1).Value = "文章標題" Then '對於標題

Word.Application.Selection.Style = ActiveDocument.Styles("標題")

'選擇標題樣式

Word.Application.Selection.ParagraphFormat.Alignment =

wdAlignParagraphCenter '標題居中

ElseIf a.ActiveSheet.Cells(i, 1).Value = "文章副標題" Then '對於副標

Word.Application.Selection.Style = ActiveDocument.Styles("副標題

") '選擇副標題樣式

Word.Application.Selection.ParagraphFormat.Alignment =

wdAlignParagraphCenter '副標題居中

ElseIf a.ActiveSheet.Cells(i, 1).Value = "作者" Then '對於作者

Word.Application.Selection.Style = ActiveDocument.Styles("正文")

'選擇作者樣式

Word.Application.Selection.ParagraphFormat.Alignment =

wdAlignParagraphCenter '作者居中

ElseIf a.ActiveSheet.Cells(i, 1).Value = "段落" Then '對於段落

Word.Application.Selection.Style = ActiveDocument.Styles("正文")

'選擇段落樣式

End If

If a.ActiveSheet.Cells(i, 1).Value = "正文一級標題" Then '對於一級標

題的段落

Word.Application.Selection.Style = ActiveDocument.Styles("標題

1")

Call 可為文章任何一個段落添加多級列表 '調用名為「可為文章任何一

個段落添加多級列表」代碼為此標題增加一級列表符號

ElseIf a.ActiveSheet.Cells(i, 1).Value = "正文二級標題" Then

Word.Application.Selection.Style = ActiveDocument.Styles("標題

2")

Call 可為文章任何一個段落添加多級列表 '調用名為「可為文章任何一

個段落添加多級列表」代碼為此標題增加一級列表符號

ElseIf a.ActiveSheet.Cells(i, 1).Value = "正文三級標題" Then

Word.Application.Selection.Style = ActiveDocument.Styles("標題

3")

Call 可為文章任何一個段落添加多級列表 ''調用名為「可為文章任何一

個段落添加多級列表」代碼為此標題增加一級列表符號

End If

Selection.TypeParagraph '在word中第i個段落末尾換行

Selection.Range.ListFormat.RemoveNumbers

NumberType:=wdNumberParagraph '換行後產生的新段落前自動添加多級列表符號,將

多級列表符號刪除,為插入第i+1個段落或標題做準備

Next i

Word.Application.ActiveDocument.ApplyQuickStyleSet2 ("Word 2010") '

整個文檔的整體樣式採用「Word 2010」樣式

Call 選中一個段落並將光標移動到該段落第一個字符前 '本代碼是把光標移動到

摘要兩個字的前面

Call 在光標所在處插入目錄

Call 在光標所在處插入分隔符中的分節符在分節符中選則下一頁分節符

Set a = Nothing ' 釋放內存

End Sub

Sub 可為文章任何一個段落添加多級列表() '被主程序調用的程序

With

ListGalleries(wdOutlineNumberGallery).ListTemplates(1).ListLevels(1)

.NumberFormat = "%1."

.TrailingCharacter = wdTrailingTab

.NumberStyle = wdListNumberStyleArabic

.NumberPosition = CentimetersToPoints(0)

.Alignment = wdListLevelAlignLeft

.TextPosition = CentimetersToPoints(0.75)

.TabPosition = wdUndefined

.ResetOnHigher = 0

.StartAt = 1

With .Font

.Bold = True

.Italic = wdUndefined

.StrikeThrough = wdUndefined

.Subscript = wdUndefined

.Superscript = wdUndefined

.Shadow = wdUndefined

.Outline = wdUndefined

.Emboss = wdUndefined

.Engrave = wdUndefined

.AllCaps = wdUndefined

.Hidden = wdUndefined

.Underline = wdUndefined

.Color = wdUndefined

.Size = wdUndefined

.Animation = wdUndefined

.DoubleStrikeThrough = wdUndefined

.Name = ""

End With

.LinkedStyle = ""

End With

With

ListGalleries(wdOutlineNumberGallery).ListTemplates(1).ListLevels(2)

.NumberFormat = "%1.%2."

.TrailingCharacter = wdTrailingTab

.NumberStyle = wdListNumberStyleArabic

.NumberPosition = CentimetersToPoints(0)

.Alignment = wdListLevelAlignLeft

.TextPosition = CentimetersToPoints(1)

.TabPosition = wdUndefined

.ResetOnHigher = 1

.StartAt = 1

With .Font

.Bold = True

.Italic = wdUndefined

.StrikeThrough = wdUndefined

.Subscript = wdUndefined

.Superscript = wdUndefined

.Shadow = wdUndefined

.Outline = wdUndefined

.Emboss = wdUndefined

.Engrave = wdUndefined

.AllCaps = wdUndefined

.Hidden = wdUndefined

.Underline = wdUndefined

.Color = wdUndefined

.Size = wdUndefined

.Animation = wdUndefined

.DoubleStrikeThrough = wdUndefined

.Name = ""

End With

.LinkedStyle = ""

End With

With

ListGalleries(wdOutlineNumberGallery).ListTemplates(1).ListLevels(3)

.NumberFormat = "%1.%2.%3."

.TrailingCharacter = wdTrailingTab

.NumberStyle = wdListNumberStyleArabic

.NumberPosition = CentimetersToPoints(0)

.Alignment = wdListLevelAlignLeft

.TextPosition = CentimetersToPoints(1.25)

.TabPosition = wdUndefined

.ResetOnHigher = 2

.StartAt = 1

With .Font

.Bold = True

.Italic = wdUndefined

.StrikeThrough = wdUndefined

.Subscript = wdUndefined

.Superscript = wdUndefined

.Shadow = wdUndefined

.Outline = wdUndefined

.Emboss = wdUndefined

.Engrave = wdUndefined

.AllCaps = wdUndefined

.Hidden = wdUndefined

.Underline = wdUndefined

.Color = wdUndefined

.Size = wdUndefined

.Animation = wdUndefined

.DoubleStrikeThrough = wdUndefined

.Name = ""

End With

.LinkedStyle = ""

End With

With

ListGalleries(wdOutlineNumberGallery).ListTemplates(1).ListLevels(4)

.NumberFormat = "%1.%2.%3.%4."

.TrailingCharacter = wdTrailingTab

.NumberStyle = wdListNumberStyleArabic

.NumberPosition = CentimetersToPoints(0)

.Alignment = wdListLevelAlignLeft

.TextPosition = CentimetersToPoints(1.5)

.TabPosition = wdUndefined

.ResetOnHigher = 3

.StartAt = 1

With .Font

.Bold = True

.Italic = wdUndefined

.StrikeThrough = wdUndefined

.Subscript = wdUndefined

.Superscript = wdUndefined

.Shadow = wdUndefined

.Outline = wdUndefined

.Emboss = wdUndefined

.Engrave = wdUndefined

.AllCaps = wdUndefined

.Hidden = wdUndefined

.Underline = wdUndefined

.Color = wdUndefined

.Size = wdUndefined

.Animation = wdUndefined

.DoubleStrikeThrough = wdUndefined

.Name = ""

End With

.LinkedStyle = ""

End With

With

ListGalleries(wdOutlineNumberGallery).ListTemplates(1).ListLevels(5)

.NumberFormat = "%1.%2.%3.%4.%5."

.TrailingCharacter = wdTrailingTab

.NumberStyle = wdListNumberStyleArabic

.NumberPosition = CentimetersToPoints(0)

.Alignment = wdListLevelAlignLeft

.TextPosition = CentimetersToPoints(1.75)

.TabPosition = wdUndefined

.ResetOnHigher = 4

.StartAt = 1

With .Font

.Bold = True

.Italic = wdUndefined

.StrikeThrough = wdUndefined

.Subscript = wdUndefined

.Superscript = wdUndefined

.Shadow = wdUndefined

.Outline = wdUndefined

.Emboss = wdUndefined

.Engrave = wdUndefined

.AllCaps = wdUndefined

.Hidden = wdUndefined

.Underline = wdUndefined

.Color = wdUndefined

.Size = wdUndefined

.Animation = wdUndefined

.DoubleStrikeThrough = wdUndefined

.Name = ""

End With

.LinkedStyle = ""

End With

With

ListGalleries(wdOutlineNumberGallery).ListTemplates(1).ListLevels(6)

.NumberFormat = "%1.%2.%3.%4.%5.%6."

.TrailingCharacter = wdTrailingTab

.NumberStyle = wdListNumberStyleArabic

.NumberPosition = CentimetersToPoints(0)

.Alignment = wdListLevelAlignLeft

.TextPosition = CentimetersToPoints(2)

.TabPosition = wdUndefined

.ResetOnHigher = 5

.StartAt = 1

With .Font

.Bold = True

.Italic = wdUndefined

.StrikeThrough = wdUndefined

.Subscript = wdUndefined

.Superscript = wdUndefined

.Shadow = wdUndefined

.Outline = wdUndefined

.Emboss = wdUndefined

.Engrave = wdUndefined

.AllCaps = wdUndefined

.Hidden = wdUndefined

.Underline = wdUndefined

.Color = wdUndefined

.Size = wdUndefined

.Animation = wdUndefined

.DoubleStrikeThrough = wdUndefined

.Name = ""

End With

.LinkedStyle = ""

End With

With

ListGalleries(wdOutlineNumberGallery).ListTemplates(1).ListLevels(7)

.NumberFormat = "%1.%2.%3.%4.%5.%6.%7."

.TrailingCharacter = wdTrailingTab

.NumberStyle = wdListNumberStyleArabic

.NumberPosition = CentimetersToPoints(0)

.Alignment = wdListLevelAlignLeft

.TextPosition = CentimetersToPoints(2.25)

.TabPosition = wdUndefined

.ResetOnHigher = 6

.StartAt = 1

With .Font

.Bold = True

.Italic = wdUndefined

.StrikeThrough = wdUndefined

.Subscript = wdUndefined

.Superscript = wdUndefined

.Shadow = wdUndefined

.Outline = wdUndefined

.Emboss = wdUndefined

.Engrave = wdUndefined

.AllCaps = wdUndefined

.Hidden = wdUndefined

.Underline = wdUndefined

.Color = wdUndefined

.Size = wdUndefined

.Animation = wdUndefined

.DoubleStrikeThrough = wdUndefined

.Name = ""

End With

.LinkedStyle = ""

End With

With

ListGalleries(wdOutlineNumberGallery).ListTemplates(1).ListLevels(8)

.NumberFormat = "%1.%2.%3.%4.%5.%6.%7.%8."

.TrailingCharacter = wdTrailingTab

.NumberStyle = wdListNumberStyleArabic

.NumberPosition = CentimetersToPoints(0)

.Alignment = wdListLevelAlignLeft

.TextPosition = CentimetersToPoints(2.5)

.TabPosition = wdUndefined

.ResetOnHigher = 7

.StartAt = 1

With .Font

.Bold = True

.Italic = wdUndefined

.StrikeThrough = wdUndefined

.Subscript = wdUndefined

.Superscript = wdUndefined

.Shadow = wdUndefined

.Outline = wdUndefined

.Emboss = wdUndefined

.Engrave = wdUndefined

.AllCaps = wdUndefined

.Hidden = wdUndefined

.Underline = wdUndefined

.Color = wdUndefined

.Size = wdUndefined

.Animation = wdUndefined

.DoubleStrikeThrough = wdUndefined

.Name = ""

End With

.LinkedStyle = ""

End With

With

ListGalleries(wdOutlineNumberGallery).ListTemplates(1).ListLevels(9)

.NumberFormat = "%1.%2.%3.%4.%5.%6.%7.%8.%9."

.TrailingCharacter = wdTrailingTab

.NumberStyle = wdListNumberStyleArabic

.NumberPosition = CentimetersToPoints(0)

.Alignment = wdListLevelAlignLeft

.TextPosition = CentimetersToPoints(2.75)

.TabPosition = wdUndefined

.ResetOnHigher = 8

.StartAt = 1

With .Font

.Bold = True

.Italic = wdUndefined

.StrikeThrough = wdUndefined

.Subscript = wdUndefined

.Superscript = wdUndefined

.Shadow = wdUndefined

.Outline = wdUndefined

.Emboss = wdUndefined

.Engrave = wdUndefined

.AllCaps = wdUndefined

.Hidden = wdUndefined

.Underline = wdUndefined

.Color = wdUndefined

.Size = wdUndefined

.Animation = wdUndefined

.DoubleStrikeThrough = wdUndefined

.Name = ""

End With

.LinkedStyle = ""

End With

ListGalleries(wdOutlineNumberGallery).ListTemplates(1).Name = ""

Selection.Range.ListFormat.ApplyListTemplateWithLevel ListTemplate:=

_

ListGalleries(wdOutlineNumberGallery).ListTemplates(1), _

ContinuePreviousList:=True, ApplyTo:=wdListApplyToWholeList, _

DefaultListBehavior:=wdWord10ListBehavior

End Sub

Sub 選中一個段落並將光標移動到該段落第一個字符前() '被主程序調用的程序

Word.Application.ActiveDocument.Paragraphs(4).Range.Select

Word.Application.Selection.MoveLeft Unit:=wdCharacter, Count:=1

End Sub

Sub 在光標所在處插入目錄() ''被主程序調用的程序。本代碼是把光標移動到摘要兩

個字的前面,即第4段落的最前面

Word.Application.Templates( _

"C:\Users\p503406\AppData\Roaming\Microsoft\Document Building

Blocks\2052\14\Built-In Building Blocks.dotx" _

).BuildingBlockEntries("自動目錄 1").Insert Where:=Selection.Range,

RichText _

:=True

End Sub

Sub 在光標所在處插入分隔符中的分節符在分節符中選則下一頁分節符() '被主程序調

用的程序

Word.Application.Selection.InsertBreak Type:=wdSectionBreakNextPage

End Sub

相關焦點

  • 【Word教程】自動生成標題編號(一)
    word教程第一篇就從大家最頭疼的標題編號開始。在使用word論文、做標書、做課件的時候,大家都需要對目錄根據不同的層級編號類似1  1.1  1.1.1 這樣,或者更複雜的第一章,1.1 1.1.1 類似這樣。如下圖很多童鞋要麼是完全手動敲編號,要麼是採用word中列表來製作,但是都會遇到不少問題。
  • 教你10分鐘設置好論文格式——多級列表 頁眉頁腳 目錄
    今天是一期關於論文格式設置的內容。最近,大部分大四畢業生都在為論文奮鬥,有的學校已經完成了線上答辯,有的在進行論文修改。除了為實驗和論文結構頭疼,有很多同學也在為論文格式頭疼。(剛考完MOS認證的Word專家級科目,操作起來扛扛的) 昨天發的推文《教你10分鐘設置好論文格式——布局 分節 樣式》,是今天推文說的多級列表和引用目錄的前提條件。所以吶~還不清楚怎麼設置分節和樣式的朋友們,要先看看前一篇推文,連結放在下圖!
  • Word自動多級編號
    步驟2 如圖 5‑83所示,單擊「開始」選項卡→「段落」組中的「多級列表」下拉列表,選擇「新定義的多級列表」選項,打開「新定義多級列表」對話框。「一,二,三(簡)…」選項,將光標定位到「輸入編號的格式」文本框中,在「一」後面添加一個「、(頓號)」。
  • 98%的人都不懂的Word裡多級列表用法
    這裡推薦大家將多級編號連結到標題樣式。接下來,Show Time~▍第一步:打開【定義新的多級列表】對話框Step1:找到【多級列表】的位置。Step2:在打來的【定義新多級列表】對話框中,單擊左下角的【更多】命令,顯示完整設置界面。
  • 如何去掉Word背景的6種方法
    關於圖片和文字水印,如何去掉Word背景呢?單擊格式----背景----水印,彈出對話框,有「文字水印」,「圖片水印」和無水印三個選項,按需設置,如果選中無水印,就可以去掉Word背景。單擊格式——背景——其他顏色、填充效果、水印等,如果是在這裡添加的背景,就從相應的選項中去掉word背景。
  • 在Word中,如何為段落快速應用樣式?
    如何為段落快速應用樣式面對一堆雜亂的文字,手動修正各段格式是一件吃力不討好的事情。如果給段落應用樣式,就可以通過修正樣式的設置,快速修改文檔中各段落的格式。如何為段落快速應用樣式呢?→ 解決方案1通過功能區設置樣式。
  • Word中如何設計層次分明的標題
    2、在菜單欄「開始」標籤卡下,找到「更改樣式」,前面有一系列的默認格式,當然也可以根據我們自己的要求個性化設置每個標題級次的樣式。5、我們也可以根據自己的需求選擇字體樣式、大小、行距、縮進等內容。還可以通過對話框左下角的「格式」按鈕修改段落格式、添加編號等。
  • Word如何插入圖片、調整大小和排版?
    在對文檔進行編輯的過程中,肯定避免不了插入多張圖片、表格、形狀、文本框等,下面就為大家詳細介紹一下,不會的朋友快快來學習吧!一、插入圖片、調整大小打開需要編輯的Word文檔:拖入圖片:粘貼後,拖動到需要的位置:
  • Excel VBA 實例(33) – 一鍵提取word中加粗文字
    之前介紹過提取word文件內容的vba實例(見文末),其實對於word中加粗的文字這類涉及到文字格式的內容,一樣也可以想辦法進行提取,今天就來分享這樣一個實例
  • 好麼,178份Excel數據轉成Word,你怕不是要累死俺,什麼,你有簡單方法,幾秒成功?
    作者:Ryoko源自:凹凸數據前言不久前,一個同事有個項目要向領導交差,其中一部分工作是根據 excel 表中的每日數據,按格式整理成日報寫入 word。好傢夥!足足 178 天的量要補,如果要靠複製粘貼,豈不是肝到吐血,(你給我自己解決啊!)
  • 如何設置Word的默認粘貼方式
    這樣就能夠把其他程序或者文檔當中的相關一些格式信息,全部過濾掉,然後我們重新的在這個文檔當中進行排版設置。在這裡呢,就引起了一個疑問,這個【只保留文本】的粘貼方式,粘貼之後,這個文本的格式結果,它顯示的結果,是什麼格式?答案是取決於當前活動光標的所在的段落它所具有的格式。當前這種格式是正文格式。如果我們在標題處粘貼,那所有的文字都會具有標題的文字格式,這樣我們平時工作就要來回的複製粘貼很多次的操作,每次都要右鍵點擊然後還要選擇粘貼只保留文本,還是有點麻煩。
  • Word標題提取到Excel,巧用這2個小技巧,快捷又直觀!
    今天將繼續給大家分享一個職場中常見的難纏問題。在平時工作中,有時候我們需要將Word中的標題信息提取到Excel中,然後再進一行下一步處理。例如,下圖所示的導航窗格中的標題文本。通常,你會怎麼操作呢?Ctrl+C複製,然後Ctrl+V一個個地粘貼嗎?顯然,並不是。在分享解決方法之前,我們先來了解下上圖中這些標題文本是如何出現在【導航】窗格中的。
  • 還不會用Word生成目錄?看完這篇就夠了!
    日常工作中,我們在使用Word編排長篇文檔時,都會製作一個目錄,它能夠起到一個導航的作用,可以方便我們快速定位到想看的內容。
  • 學會這9個Word技巧,分分鐘提升論文寫作效率(上)
    在對很多段落或文字進行相同格式編輯的時候,這個工具就可以起到一勞永逸的效果~路徑:開始-樣式擴展按鈕-選定一種樣式,在下拉菜單進行修改/新建一種樣式-左下角「格式」菜單中,可以對文字、段落、編號等做詳細的設定~PS:需要注意的是,標題設置時,需要在段落常規設置中修改每級標題大綱級別~應用場景:
  • 讓Word、PPT看傻,原來Excel文字排版也漂亮!
    如果office中哪個軟體排版最好用,肯定是word。哪個軟體排版最好看,肯定是PPT。
  • 新來的同事Word玩得好,竟提前轉正,這4個小技巧,後悔沒早點知道!
    首先大家要知道 ,Word中下劃線上面須有內容,如果沒有內容,如文字或空格是無法直接添加下劃線的。那麼,如果需要在文字末尾添加下劃線,我們可以先連續輸入多個空格之後選擇空格,再添加下劃線即可。為文字添加邊框後,點擊【開始】-【段落】-【邊框】按鈕,在彈出的菜單中選擇」邊框和底紋「命令,打開」邊框和底紋「對話框,在」顏色「下拉列表中選擇需要的顏色,並在」預覽「欄中預覽效果,然後應用於文字或段落即可。
  • Word中如何製作雙行標題,多行標題!
    但是,有些比較特殊的文件,例如說:聯合公文可能會有雙行標題,或者三行標題,甚至更多行。那麼這種類型文件的抬頭應該如何排版製作呢?今天,易老師就來為大家支個招!這種是雙行標題樣式,可以通過雙行合一來製作。
  • 這麼簡單的Word排版技巧,你還不會?
    word應該是大家用得最多的寫作文檔了,因為很基礎,發文件用的也很多,雖然看起來簡單吧,但是實際上用它做漂亮的排版,是一件比較困難的事。
  • Word中如何添加水印,據說80%職場人士都不會!
    很明顯,這都是為了防止他人隨意的使用當前的文章,用添加水印的方式來說明文章的版權。那麼,你知道水印是怎麼添加嗎?今天就一起來了解一下吧!首先,我們來看看如何添加文字水印:操作方法:點擊【設計】-【頁面背景】-【水印】-【自定義水印】命令,在打開的「水印」對話框中選擇「文字水印」選項,在下方的選項中設置水印語言、文字、字體、字號、顏色、透明度和版式即可。
  • 1秒get顏值爆表的word像花兒一樣
    每種樣式都有名字,我們可以直接把這些預先設置好的樣式應用於我們文檔中的文字或段落,這樣可一次性地將這些文字或段落設置為樣式中所預定的格式,而不必再對文字或段落的格式一點一點地設置了。這不僅節省了設置文檔格式的時間,而且可以保證文檔格式的一致性。