admin 管理员组文章数量: 1184232
2024年3月14日发(作者:计算机二级mysql有用吗)
word vba 详解
wordvba详解
wordvba详解(转一)2021-07-1209:29office中的word作者:davidshank
在所有office应用程序中,microsoftword可能将就是应用领域最广为的应用程序,
它还经常在自定义office解决方案中饰演关键的角色。开发人员用各种相同的方式采用
word,存有一些方式很直观,而另一些极其繁杂。无论牵涉何种自定义解决方案,用
visualbasicforapplications(vba)处置word文档的基本方法都就是一样的。在本月的栏
目中,我将归纳地了解如何采用word,并提供更多一些关于如何运用range对象处置
word文档内容的详细资料。
理解基本方法在word中,几乎所有的操作都要调用document(记录)对象本身或其
内容。当您用vba操作word时,document对象表示一个打开的文档,而且所有的
document对象都是application对象的documents集合的成员。
文档就是一个由字符、单词、句子和段落共同组成的子集,字符共同组成单词,单词
共同组成句子,句子共同组成段落,等等。因此,每一个document对象都具备
characters(字符)、words(分类号单词)、sentences(句子)和paragraghs四个子
集。此外,每个文档具备一个涵盖一个或多个节的sections子集,每一个节都存有一个
涵盖该节在页眉和页脚的headersfooters子集。
注意:您可以在microsoftoffice2000开发人员对象模型指南(英文)中查阅完整的
word对象模型。另外,您也可以使用对象浏览器和microsoftwordvisualbasic参考帮助
来学习有关具体某个对象、属性、方法和事件的详细内容。
通过vba采用word时,document对象处在中心边线。如果您必须打开文档或建立崭
新文档,就要建立代莱document对象。每个关上或新创建的文档均被嵌入至documents
子集。具备焦点的文档称作活动文档,由activedocument属性则表示。
document对象作为documents集合中的一个成员,您可以通过使用document对象的
索引值(document对象在documents集合中的位置,1是集合中的第一个文档)或名称来
引用它。另外,您也可以使用activedocument属性来引用当前具有焦点的文档。例如,
如果名为的文档是唯一打开的文档,则以下三个对象变量将全部指向
:
nt
setdocone=documents(1)
setdoctwo=documents(setdocthree=activedocument
一般情况下不要使用documents集合中的索引值来引用文档,因为当其它文档打开或
关闭时,某个特定文档的索引值可能会随之改变。通常,您可以通过使用
activedocument属性或采用documents子集的add方法或open方法建立的document
对象变量。以下示例表明了如何采用activedocument属性把一个地址嵌入至当前具备焦
点的文档中:
withactivedocument
.address:=talk
&vbcrlfµsoftway&wa98052shankfirststreettown,usa12345endwith
下面的示例表明如何通过采用documents子集的open方法,实例化document对象变
量。
nt
setdocpolicy=(
最后一个示例显示如何通过使用add方法,为新的空文档创建document对象的实例。
ntsetdocpolicy=
通过使用open方法打开的文档,或者通过使用add方法创建的文档,都将成为用
activedocument属性表示的当前活动文档。如果您想使documents集合里的其它文档成为
活动文档,可使用document对象的active方法。
一旦您以获取了为操作方式的document对象,绝大部分您想要通过vba展开的工作
将牵涉文本的操作方式。首先必须选定文档的一个部分,然后对它展开某些操作方式。比
如,嵌入或删掉文本,或者设置单词或字符的格式。您可以采用range或selection这两
个对象去顺利完成很多工作。在本月的专栏中,我将只探讨range对象。下个月我们将进
一步探讨selection对象的具体内容。
理解word的段落标记
当您通过程序处理文本时,必须认知word如何处置段落标记。从根本上来看,word
文档不过就是一个非常大的字符流。人们女性主义于指出文档就是单词、句子和段落的子
集。但实际上,文档就是一些字符。每个字符都存有一定的促进作用。某些字符就是字母、
空格或制表符,另一些字符就是段落标记或分页符令。
段落标记在word文档中扮演独特的角色,有时这种角色容易被误解。段落包含一个
段落标记以及所有位于此段落标记和前一个段落标记之间的文本(不包括前一个段落标
记)。另外,重要的是,段落标记本包含该段落的所有格式信息。
当激活单词、句子和段落时,如果涵盖段落标记,则所有涵盖在段落标记中的格式信
息也被激活,并在它们被粘贴至其它边线时应用于所属段落。
如果您想从段落中复制文本并将其粘贴到另一个段落中,但不想同时复制段落格式,
复制时请不要包括您要复制的文本旁边的段落标记。
wordvba揭秘(转回二)2021-07-1209:29
每个空白的word文档仅有一个段落标记,其中同时包含character对象、word对象、
sentence对象和paragragh对象各一个。但是,“属性”对话框(“文件”菜单)中的
“统计信息”选项卡将报告空白文档中没有字符、单词、句子和段落。这种差异突出显示
了word的一个重要侧面,当编程操作这些对象时,您需要特别注意这一点。
range对象
range对象表示文档中的一个连续范围,由一个起始字符位置和一个终止字符位置定
义。这个连续范围可以小到一个插入点,大到整个文档。它也可能是(而非必须是)由当
前节表示的范围。您也可以定义一个range对象,表示和当前节不同的范围。也可以在同
一个文档中定义多个range对象。range对象中的字符包含非打印字符,例如,空格、回
车符和段落标记。
采用range对象
创建range对象的典型方法为:声明一个range类型的对象变量,然后用document
对象的range方法或另一个对象(例如character、word、sentence或selection对象)
的range属性来实例化该变量。例如,以下代码创建了两个range对象,均表示活动文档
中的第二个句子。
withactivedocument
>=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=t
withrngsample
范围现在涵盖&个字符。
.end=ces(1).end
范围现在涵盖&个字符。
.setrangestart:=0,end:=activedocument._paragraphs(1).
范围现在涵盖&个字符。
.moveendunit:=wdparagraph,count:=1
范围现在涵盖&个字符。endwithendsub
您也可以通过使用对象的find属性返回find对象,重新定义range对象。以下示例
演示用find属性在活动文档中确定文本的位置。如果找到了文本,range对象将自动重新
定义以包含符合搜索条件的文本。
ormatting
e(findtext:=me!'rngrangetext被重新定义。endifendwith
许多word对象具备可以回到range对象的range属性。在您须要采用range对象的
属性和方法展开操作方式,而对象本身又不提供更多这些属性和方法的情况下,您可以采
用对象的range属性回到range对象。比如,以下代码采用paragragh对象的range属性
回到range对象,从而设置文档第一个段落中文本的格式:
dimrngparaasrange
setrngpara=aphs(1).rangewithrngpara
.bold=true
.ent==endwith
定义range对象后,您可以应用此对象的方法和属性修改所指定范围的内容或获取有
关信息。例如,您可以使用range对象的storytype属性来确定range在文档中的位置。
例一)
'载入excel数据至wordsubexcel载入word()
dimi1asinteger,str1asstring,str2asstring,arr1()i1=range(arr1=range(str1=this
r2=基本数据
setwd=createobject(e=true
filename:=str1&fori1=1toubound(arr1)
xt(join((arr1,i1),载入
ragraph'下划线
next
etwd=nothingendsub
版权声明:本文标题:word vba 详解 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1710355585a569294.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。