用VBA操作WordWord下载.docx
《用VBA操作WordWord下载.docx》由会员分享,可在线阅读,更多相关《用VBA操作WordWord下载.docx(7页珍藏版)》请在冰点文库上搜索。
您可以在microsoftoffice2000开发人员对象模型指南(英文)中查阅完整的word对象模型。
另外,您也可以使用对象浏览器和microsoftwordVisualbasic参考帮助来学习有关具体某个对象、属性、方法和事件的详细内容。
通过VbA使用word时,Document对象处于中心位置。
如果您要打开文档或创建新文档,就要创建新的Document对象。
每个打开或新创建的文档均被添加至Documents集合。
具有焦点的文档称为活动文档,由ActiveDocument属性表示。
Document对象作为Documents集合中的一个成员,您可以通过使用Document对象的索引值(Document对象在Documents集合中的位置,1是集合中的第一个文档)或名称来引用它。
另外,您也可以使用ActiveDocument属性来引用当前具有焦点的文档。
例如,如果名为policies.doc的文档是唯一打开的文档,则以下三个对象变量将全部指向policies.doc:
DimdoconeAsword.DocumentDimdocTwoAsword.DocumentDimdocThreeAsword.Documentsetdocone=Documents
(1)
setdocTwo=Documents(\setdocThree=ActiveDocument
一般情况下不要使用Documents集合中的索引值来引用文档,因为当其它文档打开或关闭时,某个特定文档的索引值可能会随之改变。
通常,您可以通过使用ActiveDocument属性或使用Documents集合的Add方法或open方法创建的Document对象变量。
以下示例显示了如何使用ActiveDocument属性把一个地址添加到当前具有焦点的文档中:
withActiveDocument
.envelope.InsertAddress:
=\
&
vbcrLf&
\&
\\\\endwith
下面的示例说明如何通过使用Documents集合的open方法,实例化Document对象变量。
DimdocpolicyAsword.Document
setdocpolicy=Documents.open(\
最后一个示例显示如何通过使用Add方法,为新的空文档创建Document对象的实例。
DimdocpolicyAsword.Documentsetdocpolicy=Documents.Add
通过使用open方法打开的文档,或者通过使用Add方法创建的文档,都将成为用ActiveDocument属性表示的当前活动文档。
如果您想使Documents集合里的其它文档成为活动文档,可使用Document对象的Active方法。
一旦您获取了要操作的Document对象,绝大部分您想通过VbA进行的工作将涉及文本的操作。
首先要指定文档的一个部分,然后对它进行某些操作。
例如,添加或删除文本,或者设置单词或字符的格式。
您可以使用Range或selection这两个对象来完成很多工作。
在本月的专栏中,我将只讨论Range对象。
下个月我们将进一步讨论selection对象的具体内容。
理解word的段落标记
当您通过程序处理文本时,必须理解word如何处理段落标记。
从根本上来看,word文档不过是一个巨大的字符流。
人们倾向于认为文档是单词、句子和段落的集合。
但实际上,文档就是一些字符。
每个字符都有一定的作用。
某些字符是字母、空格或制表符,另一些字符是段落标记或分页符。
段落标记在word文档中扮演独特的角色,有时这种角色容易被误解。
段落包含一个段落标记以及所有位于此段落标记和前一个段落标记之间的文本(不包括前一个段落标记)。
另外,重要的是,段落标记本包含该段落的所有格式信息。
当复制单词、句子和段落时,如果包含段落标记,则所有包含在段落标记中的格式信息也被复制,并在它们被粘贴到其它位置时应用于所属段落。
如果您想从段落中复制文本并将其粘贴到另一个段落中,但不想同时复制段落格式,复制时请不要包括您要复制的文本旁边的段落标记。
每个空白的word文档仅有一个段落标记,其中同时包含character对象、word对象、sentence对象和paragragh对象各一个。
但是,“属性”对话框(“文件”菜单)中的“统计信息”选项卡将报告空白文档中没有字符、单词、句子和段落。
这种差异突出显示了word的一个重要侧面,当编程操作这些对象时,您需要特别注意这一点。
Range对象
Range对象表示文档中的一个连续范围,由一个起始字符位置和一个终止字符位置定义。
这个连续范围可以小到一个插入点,大到整个文档。
它也可能是(而非必须是)由当前节表示的范围。
您也可以定义一个Range对象,表示和当前节不同的范围。
也可以在同一个文档中定义多个Range对象。
Range对象中的字符包含非打印字符,例如,空格、回车符和段落标记。
使用Range对象
创建Range对象的典型方法为:
声明一个Range类型的对象变量,然后用Document对象的Range方法或另一个对象(例如character、word、sentence或selection对象)的Range属性来实例化该变量。
例如,以下代码创建了两个Range对象,均表示活动文档中的第二个句子。
DimrngRangemethodAsword.RangeDimrngRangepropertyAsword.Range
withActiveDocumentIf.sentences.count>
=2Then
setrngRangemethod=.Range(.sentences
(2).start,_.sentences
(2).end)
setrngRangeproperty=.sentences
(2)endIfendwith
当您使用Range方法来指定文档的特定范围时,您必须使用此方法的start参数指定这个范围开始的位置,使用end参数指定结束的位置。
文档的第一个字符的字符位置为0。
最后一个字符的位置和文档的字符总数相等。
您可以通过使用characters集合的count属性确定文档中的字符数。
如前面的示例所示,您也可以使用bookmark、selection或Range对象的start和end属性来指定Range方法的start和end参数。
您可以将start和end参数设置为同一个数字,这将创建一个不包含任何字符的范围。
您可以使用对象的setRange方法设置或重新定义Range对象的内容。
您也可以通过使用Range对象的start属性或movestart方法指定或重新定义范围开始的位置。
同样地,您也可以通过使用Range对象的end属性或它的moveend方法指定或重新定义范围结束的位置。
以下示例先用contentRagne对象,该对象包含了文档的所有内容。
接着,改变
endsetRange方法重新定义范围,使之包含文档的第一个段落。
最后,使用moveend方法将范围的结束位置扩展至文档的第二个段落末尾。
此示例中的每一步都将当前范围中包含的字符的数量打印到“立即窗口”。
subRangeexample()DimrngsampleAsRange
setrngsample=ActiveDocument.content
withrngsample
Debug.print\范围现在包含\&
\个字符。
\
.end=ActiveDocument.sentences
(1).end
.setRangestart:
=0,end:
=ActiveDocument._paragraphs
(1).Range.end
.moveendunit:
=wdparagraph,count:
=1
\endwithendsub
您也可以通过使用对象的Find属性返回Find对象,重新定义Range对象。
以下示例演示用Find属性在活动文档中确定文本的位置。
如果找到了文本,Range对象将自动重新定义以包含符合搜索条件的文本。
withrngRangeText.Find.clearFormatting
If.execute(FindText:
=\'
rngRangeText被重新定义。
endIfendwith
许多word对象具有可返回Range对象的Range属性。
在您需要使用Range对象的属性和方法进行操作,而对象本身又不提供这些属性和方法的情况下,您可以使用对象的Range属性返回Range对象。
例如,以下代码使用paragragh对象的Range属性返回Range对象,从而设置文档第一个段落中文本的格式:
DimrngparaAsRange
setrngpara=ActiveDocument.paragraphs
(1).Rangewithrngpara.bold=True
.paragraphFormat.Alignment=wdAlignparagraphcenter.Font.name=\endwith
定义Range对象后,您可以应用此对象的方法和属性修改所指定范围的内容或获取有关信息。
例如,您可以使用Range对象的storyType属性来确定Range在文档中的位置。
处理Range对象中的文本
可以使用Range对象的Text属性来指定或确定该范围包含的文本。
例如,以下代码首先显示了Range对象中的文本,然后更改文本并显示新文本,最后还原为原始文本。
此示例说明了如何使用Range对象的Range属性将文本复制和粘贴到文档中并同时保持原段落
结构不变。
请注意在strnewText变量中包含段落标记(vbcrLf)的新文本如何替换在选定原段落时包含的段落标记。
publicsubchangeTextsample()DimrngTextAsRange
DimstroriginalTextAsstringDimstrnewTextAsstring
strnewText=\&
setrngText=ActiveDocument.paragraphs
(1).RangewithrngText
msgbox.Text,vboKonly,\stroriginalText=.Text.Text=strnewText
msgbox.Text,vboKonly,\&
\.Text=stroriginalText
msgbox\endwithendsub
您可以使用Range对象的storyType属性确定范围在文档中的位置。
文档构成部分是指文档中包含文本的特定范围。
在一个文档中最多可以有11种文档构成部分,表示正文、页眉、页脚、批注等不同范围。
您可以使用storyRanges属性返回storyRanges集合。
storyRanges集合包含Range对象,表示文档中的每一个文档构成部分。
新word文档只包含一个文档构成部分,称为“mainText”,表示文档主体部分的文本。
即使一个空白文档也包含字符、单词、句子和段落各一个。
您不需要专门将新文档构成部分添加至文档。
当您把文本添加至文档的某个部分(11种文档构成部分之一)时,word会自动添加它们。
例如,如果您要添加页脚,word将添加Footnotes文档构成部分。
如果您要添加批注,word将把comments文档构成部分添加到文档的storyRanges集合中。
您可以使用Range属性返回Range对象来表示文档中的每一个文档构成部分。
例如,以下代码打印与mainText和comments文档构成部分相关的文本:
DimrngmainTextAsword.RangeDimrngcommentsTextAsword.Range
setrngmainText=ActiveDocument.storyRanges(wdmainTextstory)setrngcomments=ActiveDocument.storyRanges(wdcommentsstory)Debug.printrngmainText.TextDebug.printrngcomments.Text
使用Range对象的Insertbefore或InsertAfter方法,可将文本添加至现有Range对象。
事实上,有一整类方法,名称以“Insert”开头,可以用于操作Range对象。
以下是为大家整理的用VbA操作word
(2)的相关范文,本文关键词为VbA,操作,word,VbA,操作,word,所有,off,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在综合文库中查看更多范文。
最后,小编希望文章对您有所帮助,如果有不周到的地方请多谅解,更多相关的文章正在创作中,希望您定期关注。
谢谢支持!