Excel-VBA-操作-Word(入门篇)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

本文的对象是:有一定ExcelVBA基础,对WordVBA还没有什么认识,想在Excel中通过VBA操作Word还有困难的人。一、新建Word引用需要首先创建一个对WordApplication对象的引用。在VBA中,工具-引用,选取“MicroSoftWord11.0ObjectLibrary”。方法一、NewWord.ApplicationDimWordappAsWord.ApplicationSetWordapp=NewWord.ApplicationWordapp.Visible=True'可见'Wordapp.ScreenUpdating=False'屏幕刷新DimWordDAsWord.Document'定义word类SetWordD=Wordapp.Documents.Add'新建文档‘SetWordD=Wordapp.Documents.open(filename)'打开文档……WordD.Close'关闭文档SetWordD=NothingWordApp.Quit'退出Word对象方法二、CreateObjectDimWordAppAsObjectSetWordApp=CreateObject(Word.Application)'新建Word对象‘后续操作及退出一样……方法三、GetObject文件已打开的情况下,使用:SetWordD=GetObject(filename),可建立对文档的引用,如果文件没有打开,则还需要先用方法一或二来操作。至于方法一和方法二的区别,在网上询问了一下,大师们的回答是:方法一:前期绑定,好处是在对象后输入句点可以给出快速提示,因为需要先引用对象,所以容易出现版本兼容问题。方法二:后期绑定,没有提示,根据运行代码机器上对象的版本创建对象,兼容性好。提示:有时二者有较大区别,可论坛搜索字典对象,建议编写代码时使用前期绑定,发布时使用后期绑定。二、认识Word的结构Excel有:Excel.Application’Excel引用Excel.Application.Workbooks’工作簿Excel.Application.Workbooks.Sheets(1)’工作表工作表下是Range,区域;Cells(row,col),单元格Word有:Word.ApplicationWord.Application.Documents’文档文档下有字符、单词、句子、段落和节。字符组成单词,单词组成句子,句子组成段落。此外,每个文档具有一个包含一个或多个节的Sections集合,每一个节都有一个包含该节页眉和页脚的HeadersFooters集合。Characters(index)Words(index)Sentences(index)Paragraphs(index)Sections(index)前三个返回Range对象,能直接使用任何区域属性或方法修改该Range对象。后面二个返回该集合的单个成员,而不是Range对象,不能直接使用区域属性或方法。如下使用例子:Words(1)后面直接.Copy,而.Paragraphs(1)和.Copy之间多了一个Range。Selection.Words(1).CopyActiveDocument.Paragraphs(1).Range.CopyCharacters:字符,ActiveDocument.Sentences(1).Characters.Count,第一句的字符总数。Words:单词,对于英文来说是二个空格之间的字母加空格,对于中文,一个标点符号,一个汉字,或一个词(按照微软的输入法中的词组定义?)。(感觉不是很可靠?)Sentences:句子,以句号结束?感觉也不是一个很可靠的范围,感觉还是字符、段落、节,控制起来靠谱一些。Range对象表示文档中的一个连续范围,由一个起始字符位置和一个终止字符位置定义。这个连续范围可以小到一个插入点,大到整个文档。DimrngPaAsRangeSetrngPa=ActiveDocument.Characters(1)‘第一个字符SetrngPa=ActiveDocument.Range(_Start:=ActiveDocument.Paragraphs(1).Range.Start,_End:=ActiveDocument.Paragraphs(4).Range.End)‘第1段头到第4段尾SetrngPa=ActiveDocument.Range(Start:=0,End:=10)‘当前文档前10个字符rngPa.Select选定,我觉得用处不大,原因就是为什么要选中呢?能操作就直接操作,不能的话,就选中吧(他可以说是没办法的办法)。range对象的赋值:(包括任意的对象,Set是对对象赋值的标准语句)seta=b和变量的赋值:a=1不一样三、通过录制宏生成代码有了对Word基本结构的认识,想操作这些对象应该使用什么方法、修改哪些属性?不知道就“录制宏”。录制宏是我们认识未知对象的很好方法之一,通过宏录制器将操作译成Word的VisualBasic代码,再根据需要修改代码。Word中录制与Excel不同的是,不能使用鼠标移动光标或选中一行,只能使用键盘来移动,或用Shift+方向键来选中。以下几句话就是键盘的:上、下、左、右、Home、End、Shift+左选中5个字符、Shift+右选中5个字符。Selection.MoveUpUnit:=wdLine,Count:=1Selection.MoveDownUnit:=wdLine,Count:=1Selection.MoveLeftUnit:=wdCharacter,Count:=1Selection.MoveRightUnit:=wdCharacter,Count:=1Selection.HomeKeyUnit:=wdLineSelection.EndKeyUnit:=wdLineSelection.MoveLeftUnit:=wdCharacter,Count:=5,Extend:=wdExtendSelection.MoveRightUnit:=wdCharacter,Count:=5,Extend:=wdExtend录制的宏使用Selection属性返回Selection对象。即:录制的宏总是以Selection.开头的,如上。要想使用这个Selection.,有时候我们就不得不先对特定的对象.Select,选中。当然,Selection是一个Range,Characters、Words、Sentences也是Range,Paragraphs(n).Range,Sections(2).Range也是Range,那我们就可以将Selection.后面的语句嫁接到前面这些Range之后,就不用先.Select了。录制的宏,通过嫁接或者复制到EXCELVBA之后,有的运行会出错,此时应检查以下几项:1、第一项中要求的“引用”建立了没?2、利用VBA提醒功能检查语句。VBA编辑过程中,通常在打下.之后(需要前期绑定?),该对象所有的方法、属性都会显示出来,利用这个特点,可以检查录制的宏,能否嫁接到需要操作的对象之后。提示里有就能,没有就不能。3、部分转换函数,WordVBA里有,ExcelVBA里可能没有,遇到这样的情况,也可能出错。例:WordD.Paragraphs(1).Range.ParagraphFormat.FirstLineIndent=CentimetersToPoints(0.35)Selection.ParagraphFormat.FirstLineIndent=CentimetersToPoints(0.35)是“首行缩进2字符”操作录制的,嫁接后,运行出错,按方法2检查:.ParagraphFormat.FirstLineIndent能用在Range之后,那么就是CentimetersToPoints(0.35)出问题了?这显然是一个函数,字面意思是“厘米转换成点数”,(录制时我明明输入的是“2字符”,录下来咋成了厘米为单位呢?)那是否是ExcelVBA里没有这个函数呢?(我不知道),将=后面直接改为数字运行通过,最后试下来=20大约相当于5号字的“首行缩进2字符”。(这个20,就是20Points?0.35cm=20Points?)(有人可能会说这样的办法太笨,有什么好办法请告知。先谢过!)四、Wordvba常用语句100句1、系统参数(01)Application.ActivePrinter‘获取当前打印机(02)Application.Height'当前应用程序文档的高度(03)Application.Width‘当前应用程序文档的宽度(04)Application.Build‘获取Word版本号和编译序号(05)Application.Caption‘当前应用程序名(06)Application.DefaultSaveFormat'返回空字符串,表示Word文档(07)Application.DisplayRecentFiles'返回是否显示最近使用的文档的状态(08)Application.Documents.Count'返回当前打开的文档数(09)Application.FontNames.Count‘返回当前可用的字体数(10)Application.Left‘返回当前文档的水平位置(11)Application.MacroContainer.FullName'返回当前文档名,包括所在路径Application.MacroContainer.pach'返回当前文档路径Application.ActiveDocument.Path‘获得文件的相对路径(12)Application.NormalTemplate.FullName'返回文档标准模板名称及所在位置(13)Application.RecentFiles.Count'返回最近打开的文档数目(14)Application.System.CountryRegion'返回应用程序所在的地区代码(15)Application.System.FreeDiskSpace‘返回应用程序所在磁盘可用空间(16)Application.System.HorizontalResolution'返回显示器的水平分辨率(17)Application.System.VerticalResolution'返回显示器的垂直分辨率(18)Application.System.LanguageDesignation'返回系统所使用的语言(19)Application.System.MathCoprocessorInstalled‘返回系统是否安装了数学协处理器(20)Application.System.OperatingSystem‘返回当前操作系统名(21)Application.System.ProcessorType'返回计算机处理器名(22)Application.System.Version‘返回操作系统的版本号(23)Application.Templates.Count'返回应用程序所使用的模板数(24)Application.UserName'返回应用程序用户名(25)Application.Version‘返回应用程序的版本号2、Documents/Document对象(26)ActiveDocument.AttachedTemplate.FullName'返回当前文档采用的模板名及模板所在位置(27)ActiveDocument.Bookmarks.Count'返回当前文档中的书签数(28)ActiveDocument.Characters.Count'返回当前文档的字符数(29)ActiveDocument.CodeName‘返回当前文档的代码名称(30)ActiveDocument.Comments.Count‘返回当前文档中的评论数(31)Ac

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功