Excel VBA 操作 Word(入门篇)
原文地址
本文的對(duì)象是:有一定Excel VBA基礎(chǔ),對(duì)Word VBA還沒有什么認(rèn)識(shí),想在Excel中通過VBA操作Word還有困難的人。
一、新建Word引用
需要首先創(chuàng)建一個(gè)對(duì) Word Application 對(duì)象的引用。在VBA中,工具-引用,選取“MicroSoft Word 11.0 Object Library”。
方法一、New Word.Application
Dim Wordapp As Word.Application
Set Wordapp = NewWord.Application
Wordapp.Visible = True '可見
'Wordapp.ScreenUpdating =False '屏幕刷新
Dim WordD As Word.Document '定義word類
Set WordD = Wordapp.Documents.Add '新建文檔
'Set WordD = Wordapp.Documents.open(filename) '打開文檔
'……
WordD.Close '關(guān)閉文檔
Set WordD = Nothing
WordApp.Quit '退出Word對(duì)象
方法二、CreateObject
Dim WordApp As Object
Set WordApp =CreateObject("Word.Application") '新建Word對(duì)象
‘后續(xù)操作及退出一樣……
方法三、GetObject
文件已打開的情況下,使用:SetWordD=GetObject(filename),可建立對(duì)文檔的引用,如果文件沒有打開,則還需要先用方法一或二來操作。
至于方法一和方法二的區(qū)別,在網(wǎng)上詢問了一下,大師們的回答是:
方法一:前期綁定,好處是在對(duì)象后輸入句點(diǎn)可以給出快速提示,因?yàn)樾枰纫脤?duì)象,所以容易出現(xiàn)版本兼容問題。
方法二:后期綁定,沒有提示,根據(jù)運(yùn)行代碼機(jī)器上對(duì)象的版本創(chuàng)建對(duì)象,兼容性好。
提示:有時(shí)二者有較大區(qū)別,可論壇搜索字典對(duì)象,建議編寫代碼時(shí)使用前期綁定,發(fā)布時(shí)使用后期綁定。
二、認(rèn)識(shí)Word的結(jié)構(gòu)
Excel有:
Excel.Application ’Excel引用
Excel.Application. Workbooks ’工作簿
Excel.Application. Workbooks.Sheets(1) ’工作表
工作表下是Range,區(qū)域;Cells(row,col),單元格
Word有:
Word.Application
Word.Application.Documents ’文檔
文檔下有字符、單詞、句子、段落和節(jié)。字符組成單詞,單詞組成句子,句子組成段落。此外,每個(gè)文檔具有一個(gè)包含一個(gè)或多個(gè)節(jié)的 Sections 集合,每一個(gè)節(jié)都有一個(gè)包含該節(jié)頁眉和頁腳的HeadersFooters 集合。
Characters(index)
Words(index)
Sentences(index)
Paragraphs(index)
Sections(index)
前三個(gè)返回Range對(duì)象,能直接使用任何區(qū)域?qū)傩曰蚍椒ㄐ薷脑揜ange 對(duì)象。后面二個(gè)返回該集合的單個(gè)成員,而不是 Range 對(duì)象,不能直接使用區(qū)域?qū)傩曰蚍椒āH缦率褂美樱篧ords(1)后面直接.Copy,而.Paragraphs(1)和.Copy之間多了一個(gè)Range。
Selection.Words(1).Copy
ActiveDocument.Paragraphs(1).Range.Copy
Characters:字符,ActiveDocument.Sentences(1).Characters.Count,第一句的字符總數(shù)。
Words:?jiǎn)卧~,對(duì)于英文來說是二個(gè)空格之間的字母加空格,對(duì)于中文,一個(gè)標(biāo)點(diǎn)符號(hào),一個(gè)漢字,或一個(gè)詞(按照微軟的輸入法中的詞組定義?)。(感覺不是很可靠?)
Sentences:句子,以句號(hào)結(jié)束?感覺也不是一個(gè)很可靠的范圍,感覺還是字符、段落、節(jié),控制起來靠譜一些。
Range 對(duì)象表示文檔中的一個(gè)連續(xù)范圍,由一個(gè)起始字符位置和一個(gè)終止字符位置定義。這個(gè)連續(xù)范圍可以小到一個(gè)插入點(diǎn),大到整個(gè)文檔。
Dim rngPa As Range
Set rngPa =ActiveDocument. Characters (1) '第一個(gè)字符
Set rngPa = ActiveDocument.Range( _
Start:=ActiveDocument.Paragraphs(1).Range.Start, _
End:=ActiveDocument.Paragraphs(4).Range.End) ‘第1段頭到第4段尾
Set rngPa = ActiveDocument.Range(Start:=0,End:=10) ‘當(dāng)前文檔前10個(gè)字符
rngPa.Select
選定,我覺得用處不大,原因就是為什么要選中呢?能操作就直接操作,不能的話,就選中吧(他可以說是沒辦法的辦法)。
range對(duì)象的賦值:(包括任意的對(duì)象,Set是對(duì)對(duì)象賦值的標(biāo)準(zhǔn)語句)
set a=b
和變量的賦值:a=1不一樣
第三段:通過錄制宏生成代碼,修改如下:
三、通過錄制宏生成代碼
有了對(duì)Word基本結(jié)構(gòu)的認(rèn)識(shí),想操作這些對(duì)象應(yīng)該使用什么方法、修改哪些屬性?不知道就“錄制宏”。錄制宏是我們認(rèn)識(shí)未知對(duì)象的很好方法之一,通過宏錄制器將操作譯成Word的 Visual Basic 代碼,再根據(jù)需要修改代碼。Word中錄制與Excel不同的是,不能使用鼠標(biāo)移動(dòng)光標(biāo)或選中一行,只能使用鍵盤來移動(dòng),或用Shift+方向鍵來選中。以下幾句話就是鍵盤的:上、下、左、右、Home、End、Shift+左選中5個(gè)字符、Shift+右選中5個(gè)字符。
Selection.MoveUp Unit:=wdLine, Count:=1
Selection.MoveDown Unit:=wdLine, Count:=1
Selection.MoveLeft Unit:=wdCharacter, Count:=1
Selection.MoveRight Unit:=wdCharacter, Count:=1
Selection.HomeKey Unit:=wdLine
Selection.EndKey Unit:=wdLine
Selection.MoveLeft Unit:=wdCharacter, Count:=5, Extend:=wdExtend
Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend
錄制的宏使用 Selection 屬性返回 Selection 對(duì)象。即:錄制的宏總是以Selection.開頭的,如上。要想使用這個(gè)Selection.,有時(shí)候我們就不得不先對(duì)特定的對(duì)象.Select,選中。
當(dāng)然,Selection是一個(gè)Range,Characters、Words、Sentences也是Range,Paragraphs(n). Range, Sections(2). Range也是Range,那我們就可以將Selection.后面的語句嫁接到前面這些Range之后,就不用先.Select了。
錄制的宏,通過嫁接或者復(fù)制到EXCEL VBA之后,有的運(yùn)行會(huì)出錯(cuò),此時(shí)應(yīng)檢查以下幾項(xiàng):
1、第一項(xiàng)中要求的“引用”建立了沒?
2、利用VBA提醒功能檢查語句。VBA編輯過程中,通常在打下. 之后(需要前期綁定?),該對(duì)象所有的方法、屬性都會(huì)顯示出來,利用這個(gè)特點(diǎn),可以檢查錄制的宏,能否嫁接到需要操作的對(duì)象之后。提示里有就能,沒有就不能。
3、部分轉(zhuǎn)換函數(shù),Word VBA里有,Excel VBA里可能沒有,遇到這樣的情況,也可能出錯(cuò)。
例:
WordD.Paragraphs(1).Range.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0.35)
Selection.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0.35)是“首行縮進(jìn)2字符”操作錄制的,嫁接后,運(yùn)行出錯(cuò),按方法2檢查:.ParagraphFormat.FirstLineIndent能用在Range之后,那么就是CentimetersToPoints(0.35)出問題了?這顯然是一個(gè)函數(shù),字面意思是“厘米轉(zhuǎn)換成點(diǎn)數(shù)”,(錄制時(shí)我明明輸入的是“2字符”,錄下來咋成了厘米為單位呢?)那是否是Excel VBA里沒有這個(gè)函數(shù)呢?(我不知道),將=后面直接改為數(shù)字運(yùn)行通過,最后試下來=20大約相當(dāng)于5號(hào)字的“首行縮進(jìn)2字符”。(這個(gè)20,就是20Points?0.35cm=20 Points?)
(有人可能會(huì)說這樣的辦法太笨,有什么好辦法請(qǐng)告知。先謝過!)
四、Word vba常用語句100句
1、系統(tǒng)參數(shù)
(01) Application.ActivePrinter ‘獲取當(dāng)前打印機(jī)
(02) Application.Height '當(dāng)前應(yīng)用程序文檔的高度
(03) Application.Width ‘當(dāng)前應(yīng)用程序文檔的寬度
(04) Application.Build ‘獲取Word版本號(hào)和編譯序號(hào)
(05) Application.Caption ‘當(dāng)前應(yīng)用程序名
(06) Application.DefaultSaveFormat '返回空字符串,表示W(wǎng)ord文檔
(07) Application.DisplayRecentFiles '返回是否顯示最近使用的文檔的狀態(tài)
(08) Application.Documents.Count '返回當(dāng)前打開的文檔數(shù)
(09) Application.FontNames.Count ‘返回當(dāng)前可用的字體數(shù)
(10) Application.Left ‘返回當(dāng)前文檔的水平位置
(11) Application.MacroContainer.FullName'返回當(dāng)前文檔名,包括所在路徑
Application.MacroContainer.pach '返回當(dāng)前文檔路徑
Application.ActiveDocument.Path ‘獲得文件的相對(duì)路徑
(12) Application.NormalTemplate.FullName'返回文檔標(biāo)準(zhǔn)模板名稱及所在位置
(13) Application.RecentFiles.Count '返回最近打開的文檔數(shù)目
(14) Application.System.CountryRegion '返回應(yīng)用程序所在的地區(qū)代碼
(15) Application.System.FreeDiskSpace ‘返回應(yīng)用程序所在磁盤可用空間
(16) Application.System.HorizontalResolution '返回顯示器的水平分辨率
(17) Application.System.VerticalResolution '返回顯示器的垂直分辨率
(18) Application.System.LanguageDesignation '返回系統(tǒng)所使用的語言
(19) Application.System.MathCoprocessorInstalled ‘返回系統(tǒng)是否安裝了數(shù)學(xué)協(xié)處理器
(20) Application.System.OperatingSystem ‘返回當(dāng)前操作系統(tǒng)名
(21) Application.System.ProcessorType '返回計(jì)算機(jī)處理器名
(22) Application.System.Version ‘返回操作系統(tǒng)的版本號(hào)
(23) Application.Templates.Count '返回應(yīng)用程序所使用的模板數(shù)
(24) Application.UserName '返回應(yīng)用程序用戶名
(25) Application.Version ‘返回應(yīng)用程序的版本號(hào)
2、Documents/Document對(duì)象
(26) ActiveDocument.AttachedTemplate.FullName '返回當(dāng)前文檔采用的模板名及模板所在位置
(27) ActiveDocument.Bookmarks.Count '返回當(dāng)前文檔中的書簽數(shù)
(28) ActiveDocument.Characters.Count '返回當(dāng)前文檔的字符數(shù)
(29) ActiveDocument.CodeName ‘返回當(dāng)前文檔的代碼名稱
(30) ActiveDocument.Comments.Count ‘ 返回當(dāng)前文檔中的評(píng)論數(shù)
(31) ActiveDocument.Endnotes.Count '返回當(dāng)前文檔中的尾注數(shù)
(32) ActiveDocument.Fields.Count '返回當(dāng)前文檔中的域數(shù)目
(33) ActiveDocument.Footnotes.Count ‘返回當(dāng)前文檔中的腳注數(shù)
(34) ActiveDocument.FullName '返回當(dāng)前文檔的全名及所在位置
(35) ActiveDocument.HasPassword '當(dāng)前文檔是否有密碼保護(hù)
(36) ActiveDocument.Hyperlinks.Count '返回當(dāng)前文檔中的鏈接數(shù)
(37) ActiveDocument.Indexes.Count '返回當(dāng)前文檔中的索引數(shù)
(38) ActiveDocument.ListParagraphs.Count'返回當(dāng)前文檔中項(xiàng)目編號(hào)或項(xiàng)目符號(hào)數(shù)
(39) ActiveDocument.ListTemplates.Count '返回當(dāng)前文檔中使用的列表模板數(shù)
(40) ActiveDocument.Paragraphs.Count '返回當(dāng)前文檔中的段落數(shù)
(41) ActiveDocument.Password=XXX '設(shè)置打開文件使用的密碼
(42) ActiveDocument.ReadOnly '獲取當(dāng)前文檔是否為只讀屬性
(43) ActiveDocument.Saved '當(dāng)前文檔是否被保存
(44) ActiveDocument.Sections.Count '當(dāng)前文檔中的節(jié)數(shù)
(45) ActiveDocument.Sentences.Count‘當(dāng)前文檔中的語句數(shù)
(46) ActiveDocument.Shapes.Count '當(dāng)前文檔中的形狀數(shù) ,圖形?
(47) ActiveDocument.Styles.Count '當(dāng)前文檔中的樣式數(shù)
(48) ActiveDocument.Tables.Count ‘當(dāng)前文檔中的表格數(shù)
(49) ActiveDocument.TablesOfAuthorities.Count ‘返回當(dāng)前文檔中的引文目錄數(shù)
(50) ActiveDocument.TablesOfAuthoritiesCategories.Count ‘返回當(dāng)前文檔中引文目錄類別數(shù)
(51) ActiveDocument.TablesOfContents.Count ‘返回當(dāng)前文檔中的目錄數(shù)
(52) ActiveDocument.TablesOfFigures.Count '返回當(dāng)前文檔中的圖表目錄數(shù)
3、Paragraphs/Paragraph對(duì)象
(53) Selection.Paragraphs.Count '返回所選區(qū)域的段落數(shù)
(54) Selection.Paragraphs.First '返回所選區(qū)域中的第一段
(55) ActiveDocument.Paragraphs(1).LeftIndent '返回當(dāng)前文檔中第一段的左縮進(jìn)值
(56) ActiveDocument.Paragraphs(1).LineSpacing '返回當(dāng)前文檔中第一段的行距
(57) ActiveDocument.Paragraphs(1).OutlineLevel‘返回或設(shè)置當(dāng)前文檔中第一段的大綱級(jí)別
.OutlineLevel = wdOutlineLevel2 ‘2級(jí)
.OutlineLevel = wdOutlineLevel3 ‘3級(jí)
(58) ActiveDocument.Paragraphs(1).RightIndent ‘返回當(dāng)前文檔中第一段的右縮進(jìn)量
(59) ActiveDocument.Paragraphs(1).SpaceBefore '返回當(dāng)前文檔中第一段的段前間距
(60) ActiveDocument.Paragraphs(1).SpaceAfter ‘返回當(dāng)前文檔中第一段的段后間距
(61) ActiveDocument.Paragraphs(1).Range.Text'返回當(dāng)前文檔中第一段的內(nèi)容
(62) ActiveDocument.Paragraphs(1).Range.Style.NameLocal '返回當(dāng)前文檔中第一段應(yīng)用的樣式名
(63) ActiveDocument.Paragraphs(1).Range.Style.Description '返回當(dāng)前文檔中第一段所應(yīng)用樣式的詳細(xì)描述
(64) ActiveDocument.Paragraphs(1).Range.Style.Font.Name '返回當(dāng)前文檔中第一段所應(yīng)用樣式的字體名
(65) ActiveDocument.Paragraphs(1).Range.Style.Font.NameFarEast'返回或設(shè)置一種東亞字體名
(66) ActiveDocument.Paragraphs(1).Range.Style.Font.Size '返回或設(shè)置當(dāng)前文檔中第一段所應(yīng)用樣式的字體大小
(67) ActiveDocument.Paragraphs(1).Range.Style.Font.Spacing '返回或設(shè)置字符間距
(68) Selection.Words.Count '所選區(qū)域的字?jǐn)?shù) Sentences對(duì)象
(69) Selection.Sentences.Item(1)'所選區(qū)域中的第一句的內(nèi)容 Words對(duì)象
(71) ActiveDocument.Words(1).Select '選擇當(dāng)前文檔中的第一個(gè)詞
(72) ActiveDocument.Range.Words(1).InsertAfter "我愛你!" '在當(dāng)前文檔中的第一個(gè)詞后插入“我愛你”
4、Characters對(duì)象
(73) Selection.Characters.Count '當(dāng)前文檔中所選區(qū)域的字符數(shù)
(74) ActiveDocument.Paragraphs(1).Range.InsertParagraphAfter'在當(dāng)前文檔的第一段之后插入一個(gè)新段落
5、Sections/Section對(duì)象
(75) ActiveDocument.Sections.First '當(dāng)前文檔的第一節(jié)
(76) ActiveDocument.Sections.First.PageSetup.BottomMargin '當(dāng)前文檔第一節(jié)所在頁的底邊距
(77) ActiveDocument.Sections.First.PageSetup.LeftMargin '當(dāng)前文檔第一節(jié)所在頁的左邊距
(78) ActiveDocument.Sections.First.PageSetup.RightMargin '當(dāng)前文檔第一節(jié)所在頁的右邊距
(79) ActiveDocument.Sections.First.PageSetup.TopMargin '當(dāng)前文檔第一節(jié)所在頁的頂邊距
(80) ActiveDocument.Sections.First.PageSetup.PaperSize '返回或設(shè)置當(dāng)前文檔第一節(jié)所在頁的大小
(81) ActiveDocument.Sections.First.PageSetup.PageHeight '返回或設(shè)置當(dāng)前文檔第一節(jié)所在頁的高度
(82) ActiveDocument.Sections.First.PageSetup.PageWidth '返回或設(shè)置當(dāng)前文檔第一節(jié)所在頁的寬度
(83) ActiveDocument.Sections.Add Range:=myRange '在當(dāng)前文檔中添加新節(jié)
(84) ActiveDocument.Sections.Item(2) '當(dāng)前文檔中的第二節(jié)
(85) ActiveDocument.Sections.Last.Range.InsertAfter "文檔結(jié)束!" '在當(dāng)前文檔中最后一節(jié)的結(jié)尾添加文字“文檔結(jié)束!”
6、Range對(duì)象
(86) ActiveDocument.Range(Start:=0, End:=10) '表示當(dāng)前文檔前10個(gè)字符所組成的一個(gè)Range對(duì)象
(87) Set myRange = ActiveDocument.Range(Start:=ActiveDocument.Paragraphs(2).Range.Start, _
End:=ActiveDocument.Paragraphs(4).Range.End) '將當(dāng)前文檔第2段至第4段設(shè)置為一個(gè)Range對(duì)象
(88) ActiveDocument.Paragraphs(1).Range.Copy '復(fù)制當(dāng)前文檔中的第一段
(89) Selection.Copy
Documents.Add.Content.Paste '復(fù)制所選內(nèi)容到新文檔中
(90) ActiveDocument.Bookmarks("Book1").Copy Name:="Book2" '將Book2書簽復(fù)制Book1書簽標(biāo)記的位置
(91) Selection.GoTo What:=wdGoToLine, Which:=wdGoToAbsolute, Count:=4 '將所選內(nèi)容移至文檔中的第4行
(92) Selection.GoTo What:=wdGoToTable, Which:=wdGoToNext '將所選內(nèi)容移至下一個(gè)表格的第1個(gè)單元格
(93) Selection.Range.AutoFormat '為所選內(nèi)容套用格式
(94) ActiveDocument.Content.Font.Name = "Arial" '將當(dāng)前文檔的字體設(shè)置為斜體
(95) ActiveDocument.Content.Select Selection.Delete '將當(dāng)前文檔中的內(nèi)容刪除其它
(96) Documents.Add '添加一個(gè)新文檔
(97) Set myTable = ActiveDocument.Tables.Add(Selection.Range, 2, 2) '在當(dāng)前文檔所選區(qū)域添加一個(gè)2行2列的表格
7、文件讀寫
(98) Open "C:my.txt" For Input As #1 '打開一個(gè)用于輸入的文件并令其編號(hào)為1
(99) Line Input #1, TextLine '讀取被打開用于輸入且編號(hào)為1的文件
(100) Close #1 '關(guān)閉編號(hào)為1的文件
五、例子。例中的操作全部是錄制,然后嫁接的。
例子:用Excel VBA,將如下Excel表格(考試系統(tǒng)中導(dǎo)出的題庫 ),生成如下Word文檔
規(guī)程名稱 題型 題目?jī)?nèi)容 答案A 答案B 答案C 答案D 正確答案 分值 有否圖形
規(guī)程1 選擇題 題目1…… …… …… …… …… ABCD 2
規(guī)程1 判斷題 題目2…… 對(duì) 2
規(guī)程2 選擇題 題目3…… …… …… …… …… A 2
規(guī)程2 判斷題 題目4…… 錯(cuò) 2
規(guī)程1
一、選擇題
1、題目1……(ABCD)
A、……
B、……
C、……
D、……
二、判斷題
1、題目2……(對(duì))
規(guī)程2
一、選擇題
1、題目3……(A)
A、……
B、……
C、……
D、……
二、判斷題
1、題目4……(錯(cuò))
Sub ScWordWd()
'將“題庫”中的題目,按格式生成Word文檔
Dim I As Integer, J As Integer, Zhs As Integer, Xh As Integer, Dls As String
Dim Lr As String, Bt As String, Bt1 As String, Tx As String, Tx1 As String
Dim Lj As String, Wjm As String
Dim AA
Sheets("題庫").Select
Zhs = Sheets("題庫").UsedRange.Rows.Count
Bt = Cells(2, 1) '標(biāo)題
Tx = Cells(2, 2) '題型
Xh = 1 '
Dls = 1 '
'Dim WordApp As Object
'Set WordApp = CreateObject("Word.Application") '新建Word對(duì)象
Dim Wordapp As Word.Application
Set Wordapp = New Word.Application '新建Word對(duì)象
Wordapp.Visible = True '可見
'Wordapp.ScreenUpdating = False '屏幕刷新
Dim WordD As Word.Document '定義word類
Set WordD = Wordapp.Documents.Add '新建文檔
Wordapp.Selection.WholeStory '全選
Wordapp.Selection.Font.Name = "宋體" '字體
Wordapp.Selection.Font.Size = 10 '字號(hào)
For I = 2 To Zhs
Bt1 = Cells(I, 1)
WordD.Paragraphs(Dls).Range.Font.Name = "宋體" '字體
WordD.Paragraphs(Dls).Range.Font.Size = 10 '字號(hào)
If Len(Trim(Bt1)) > 0 Then
Tx1 = Cells(I, 2)
Lr = Cells(I, 3)
If Bt1 <> Bt Then '標(biāo)題不同,寫標(biāo)題,居中
If I > 5 Then '
WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf) '插入回車符,增加一段
Dls = Dls + 1
WordD.Paragraphs(Dls).Range.Select
'Wordapp.Selection.InsertBreak Type:=wdPageBreak
'WordD.Paragraphs(Dls).Range.InsertBreak Type:=wdPageBreak '插入分頁符,兩個(gè)都沒反應(yīng)?
Wordapp.Selection.InsertBreak Type:=wdSectionBreakNextPage '插入分節(jié)符(下一頁)
WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf) '插入回車符,增加一段
Dls = Dls + 1
End If
Bt = Bt1
WordD.Paragraphs(Dls).Range.Text = Bt & vbCrLf '寫標(biāo)題
'WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf) '插入回車符,增加一段
WordD.Paragraphs(Dls).OutlineLevel = wdOutlineLevel2 '設(shè)置大綱級(jí)別,2級(jí)
'WordD.Paragraphs(Dls).Range.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0)
WordD.Paragraphs(Dls).Range.ParagraphFormat.FirstLineIndent = 0 '取消首行縮進(jìn)
'WordD.Paragraphs(Dls).Range.Font.Name = "宋體" '字體
'WordD.Paragraphs(Dls).Range.Font.Size = 10 '字號(hào)
WordD.Paragraphs(Dls).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter '居中排列
WordD.Paragraphs(Dls).Range.Font.Bold = wdToggle '加粗
Dls = Dls + 1
Xh = 1
End If
If Tx1 <> Tx Then '題型不同,寫題型
If Tx1 = "選擇題" Then
WordD.Paragraphs(Dls).Range.Text = "一、選擇題" '寫題型
Else
WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf) '插入回車符,增加一段
Dls = Dls + 1
WordD.Paragraphs(Dls).Range.Text = "二、判斷題" '寫題型
End If
Tx = Tx1
WordD.Paragraphs(Dls).Range.ParagraphFormat.Alignment = wdAlignParagraphJustify '左對(duì)齊
'WordD.Paragraphs(Dls).Range.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0.35) '首行縮進(jìn)2字符,時(shí)能用時(shí)不能用,CentimetersToPoints不能被Excel識(shí)別?
WordD.Paragraphs(Dls).Range.ParagraphFormat.FirstLineIndent = 20 '首行縮進(jìn),20大約相當(dāng)于5號(hào)字的2字符
WordD.Paragraphs(Dls).Range.InsertAfter (vbCrLf) '插入回車符,增加一段
WordD.Paragraphs(Dls).Range.Font.Bold = wdToggle '加粗
Dls = Dls + 1
Xh = 1
End If
If Tx = "選擇題" Then
WordD.Paragraphs(Dls).Range.Text = Xh & "、" & Lr & "(" & Cells(I, 8) & ")" & vbCrLf '寫題目及標(biāo)準(zhǔn)答案
Dls = Dls + 1
WordD.Paragraphs(Dls).Range.Text = "A、" & Cells(I, 4) & vbCrLf '選項(xiàng)A
Dls = Dls + 1
WordD.Paragraphs(Dls).Range.Text = "B、" & Cells(I, 5) & vbCrLf '選項(xiàng)B
Dls = Dls + 1
WordD.Paragraphs(Dls).Range.Text = "C、" & Cells(I, 6) & vbCrLf '選項(xiàng)C
Dls = Dls + 1
If Len(Trim(Cells(I, 7))) > 0 Then
WordD.Paragraphs(Dls).Range.Text = "D、" & Cells(I, 7) & vbCrLf '選項(xiàng)D
Dls = Dls + 1
End If
Xh = Xh + 1
Else
WordD.Paragraphs(Dls).Range.Text = Xh & "、" & Lr & "(" & Cells(I, 8) & ")" & vbCrLf '寫題目及標(biāo)準(zhǔn)答案
Dls = Dls + 1
Xh = Xh + 1
End If
End If
Next I
Wordapp.WindowState = wdWindowStateMinimize '最小化窗口
'Wordapp.ScreenUpdating = True '屏幕刷新
'WordD.Close '
'Set WordD = Nothing
'Set Wordapp = Nothing
'Wordapp.Quit '退出Word對(duì)象
ThisWorkbook.Activate
End Sub
(完)
總結(jié)
以上是生活随笔為你收集整理的Excel VBA 操作 Word(入门篇)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL高可用——PXC简介
- 下一篇: SQL Join 与 In的效率