WordVBA学习交流资料全.docx

上传人:b****1 文档编号:13272469 上传时间:2023-06-12 格式:DOCX 页数:114 大小:328.81KB
下载 相关 举报
WordVBA学习交流资料全.docx_第1页
第1页 / 共114页
WordVBA学习交流资料全.docx_第2页
第2页 / 共114页
WordVBA学习交流资料全.docx_第3页
第3页 / 共114页
WordVBA学习交流资料全.docx_第4页
第4页 / 共114页
WordVBA学习交流资料全.docx_第5页
第5页 / 共114页
WordVBA学习交流资料全.docx_第6页
第6页 / 共114页
WordVBA学习交流资料全.docx_第7页
第7页 / 共114页
WordVBA学习交流资料全.docx_第8页
第8页 / 共114页
WordVBA学习交流资料全.docx_第9页
第9页 / 共114页
WordVBA学习交流资料全.docx_第10页
第10页 / 共114页
WordVBA学习交流资料全.docx_第11页
第11页 / 共114页
WordVBA学习交流资料全.docx_第12页
第12页 / 共114页
WordVBA学习交流资料全.docx_第13页
第13页 / 共114页
WordVBA学习交流资料全.docx_第14页
第14页 / 共114页
WordVBA学习交流资料全.docx_第15页
第15页 / 共114页
WordVBA学习交流资料全.docx_第16页
第16页 / 共114页
WordVBA学习交流资料全.docx_第17页
第17页 / 共114页
WordVBA学习交流资料全.docx_第18页
第18页 / 共114页
WordVBA学习交流资料全.docx_第19页
第19页 / 共114页
WordVBA学习交流资料全.docx_第20页
第20页 / 共114页
亲,该文档总共114页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

WordVBA学习交流资料全.docx

《WordVBA学习交流资料全.docx》由会员分享,可在线阅读,更多相关《WordVBA学习交流资料全.docx(114页珍藏版)》请在冰点文库上搜索。

WordVBA学习交流资料全.docx

WordVBA学习交流资料全

WordVBA学习交流资料

 

一、对象模型

打开WordVBA帮助,首先看到的是“Word的对象模型”(如下所示)

图表1

知识点:

知道Application对象(Word应该程序的总对象)、Doctuments对象(文档集对象)、Paragraphs对象(段落集)、Selection(选中区域)对象、Tables(表格)对象、Sections(节,即Word的第一节)对象、Headers(页眉)对象。

二、新增功能

(略)

原因:

我们的初衷大多是从“零”开始,最基础的我们都不知道,何来“新增”啊?

但是,以后学到相关的知识时,会跳到这里,学一些新增的“对象”、“方法”、“事件”、“属性”等。

三、编程概念

对象是VisualBasic的结构基础,在VisualBasic中进行的所有操作几乎都与修改对象有关。

MicrosoftWord的任何元素,如文档、表格、段落、书签、域等,都可用VisualBasic中的对象来表示。

什么是对象和集合?

对象代表一个Word元素,如文档、段落、书签或单独的字符。

集合也是一个对象,该对象包含多个其他对象,通常这些对象属于相同的类型;例如,一个集合对象中可包含文档中的所有书签对象。

通过使用属性和方法,可以修改单独的的对象,也可修改整个的对象集合。

例如:

ActiveDocument.Paragraphs

(2).Range.Characters

(1).Font.Color=wdColorRed

在Word的VBA中,大多数对象都是通过Application来访问,但有几个可以直接访问:

如activedocumnet、documents等,当然通过application对象也行,但无疑后者更简略。

什么是属性?

属性是对象的一种特性或该对象行为的一个方面。

例如,文档属性包含其名称、容、保存状态以及是否启用修订。

若要更改一个对象的特征,可以修改其属性值。

若要设置属性的值,可在对象的后面紧接一个句号、属性名称、一个等号及新的属性值。

下列示例在名为“MyDoc.doc”的文档中启用修订。

SubTrackChanges()

Documents("Sales.doc").TrackRevisions=True

EndSub3

在本例中,Documents引用由打开的文档(注意是对打开后文档的操作)构成的集合,而“MyDoc.doc”标识集合中单独的文档。

并设置该文档的TrackRevisions属性。

不能设置某些属性。

属性的“帮助”主题中会标明可以设置该属性(可读写),或只能读取该属性(只读)。

通过返回对象的一个属性值,可以获取有关该对象的信息。

下列示例返回活动文档的名称。

SubGetDocumentName()

DimstrDocNameAsString

strDocName=ActiveDocument.Name

MsgBoxstrDocName

EndSub

(这个例子输出的没有路径,只有名字.若带路径的话,把strDocName=ActiveDocument.Name改为:

strDocName=ActiveDocument.Path&ActiveDocument.Name)

在本例中,ActiveDocument引用Word活动窗口中的文档。

该文档的名称赋给了strDocName变量。

说明:

每个属性的“帮助”主题表明可以设置该属性(可读写),只能读取该属性(只读),或只能写入该属性(只写)。

此外“VisualBasic编辑器”中的“对象浏览器”在浏览窗口的底部显示所选属性的读写状态。

什么是方法?

方法是对象可以执行的动作。

例如,只要文档可以打印,Document对象就具有PrintOut方法。

方法通常带有参数,以限定执行动作的方式。

下列示例打印活动文档的前三页。

SubPrintThreePages()

ActiveDocument.PrintOutRange:

=wdPrintRangeOfPages,Pages:

="1-3"

EndSub

在大多数情况下,方法是动作,而属性是性质。

使用方法将导致发生对象的某些事件(所以,有人说:

“方法是集成了的事件”),而使用属性则会返回对象的信息,或引起对象的某个性质的改变。

返回一个对象

可通过返回集合中单独的对象的方式来返回大多数对象。

例如Documents集合包含打开的Word文档。

可使用(位于Word对象结构顶层的)Application对象的Documents属性返回Documents集合。

在访问集合之后,可以通过在括号中使用索引序号(与处理数组的方式相似)返回单独的对象。

索引序号通常是一个数值或名称。

详细容,请参阅返回集合中的对象。

下列示例使用Documents属性访问Documents集合。

索引序号用于返回Documents集合中的第一篇文档。

然后将Close方法应用于Document对象,关闭Documents集合中的第一篇文档。

SubCloseDocument()

Documents

(1).Close

EndSub

'这个可能以后大多不用,原因就是索引序号在变,当打开、关闭一个文档时,对应的序号就增加或减少了数字,所以不好把握,大多不用。

下列示例使用名称(指定为一个字符串)来识别Documents集合中的Document对象。

SubCloseSalesDoc()

Documents("Sales.doc").Close

EndSub

'这个常用,让某个指定的文档关闭。

集合对象通常具有可用于修改整个对象集合的方法和属性。

Documents对象具有Save方法,可用于保存集合中的所有文档。

下列示例通过使用Save方法保存所有打开的文档。

SubSaveAllOpenDocuments()

Documents.Save

EndSub

'所有的文档保存,相当于按住Shift再点击文件下的全部保存命令。

Document对象也可使用Save方法保存单独的文档。

下列示例保存名为Sales.doc的文档。

SubSaveSalesDoc()

Documents("Sales.doc").Save

EndSub

'对指定的文档保存。

若要返回一个处于Word对象结构底层的对象,就必须使用可返回对象的属性和方法,“深入”到该对象。

若要查看该过程的执行,请打开“VisualBasic编辑器”,在“视图”菜单上单击“对象浏览器”。

单击左侧“类”列表中的Application。

然后单击右侧“成员”列表中的ActiveDocument。

“对象浏览器”底部会显示文字,表明ActiveDocument是只读的,该属性返回Document对象。

然后单击“对象浏览器”底部的Document,则会在“类”列表中自动选定Document对象,并将在“成员”列表中显示Document对象的成员。

滚动成员列表,找到Close,单击Close方法。

“对象浏览器”窗口底部会显示文字,说明该方法的语法。

有关该方法的详细容,请按F1(作者注:

不把F1磨平,VBA很难真正掌握^-^)或单击“帮助”按钮,以跳转到Close方法的“帮助”主题。

根据这些信息可编写下列指令,以关闭活动文档。

SubCloseDocSaveChanges()

ActiveDocument.CloseSaveChanges:

=wdSaveChanges

EndSub

'关闭并保存改变。

这里显然,保存为方法,后面有参数

下列示例将活动文档窗口最大化。

SubMaximizeDocumentWindow()

ActiveDocument.ActiveWindow.WindowState=wdWindowStateMaximize

EndSub

'这个是赋最大化值属性给活动窗口

ActiveWindow属性返回一个Window对象,该对象代表活动窗口。

将WindowState属性设为最大常量(wdWindowStateMaximize)。

下列示例新建一篇文档,并显示“另存为”对话框,这样即可为文档提供一个名称。

SubCreateSaveNewDocument()

Documents.Add.Save

EndSub

'这个有意思,添加新文档并保存,一步,利害吧

'如果不是看帮助,你敢这么用吗?

方法.方法

Documents属性返回Documents集合。

Add方法新建一篇文档,并返回一个Document对象。

然后对Document对象应用Save方法。

如上所示,可以使用方法或属性来访问下层对象。

也就是说,在对象结构中,将方法或属性应用于某个对象的上一级对象,可返回该下级对象。

返回所需对象之后,就可以应用该对象的方法并控制其属性。

要查看对象结构分层的情况,请参阅MicrosoftWord对象。

获得有关对象、方法和属性的“帮助”信息

在熟悉Word对象模型之前,可以利用一些工具来深入了解对象结构。

自动成员列表。

(重要)在“VisualBasic编辑器”中,在对象后面键入句号(.)后,即显示可用的属性和方法的列表。

例如,如果键入“Application.”,就会显示Application对象的方法和属性的下拉列表。

帮助。

也可以使用“帮助”找到可应用于对象的属性和方法。

“帮助”中的每个对象主题都包含一个“参阅”跳转,以显示该对象的属性和方法列表。

在“对象浏览器”或某一模块中按F1,可跳转到相应的“帮助”主题。

MicrosoftWord对象。

该主题阐明在分级结构中Word对象的排列方式。

在结构图中单击一个对象,可显示相应的“帮助”主题。

对象浏览器。

“VisualBasic编辑器”中的“对象浏览器”显示Word对象的成员(属性和方法)。

-----------------------------------------

实例:

打开Word后,按Alt+F11,出现VBE窗口,

双击右边的Thisdocument(当然,放到底下的模块中任一个也行),输入如下容:

Subautoexec()

Application.Caption="我爱我家!

"

EndSub

这时,关闭Word,再打开Word。

你的标题就有“×××.doc—我爱我家!

”了!

 

图表2

当然,也可以进一步做成这样:

Subautoexec()

Dima

a=MsgBox("我家我家",vbYesNo,"这是一个试验")

Ifa<>6Then

Application.Quit

EndIf

EndSub

'功能就是打开Word时,显示此对话框,如果点了“是”就不作处理即打开Word,否则,退出Quit。

也可以写成这样:

Subautoexec()

Dima

a=InputBox("你的","防君子,不防小人!

")

Ifa<>"小小"Then

Application.Quit

EndIf

EndSub

'功能就是打开Word时,显示此对话框,如果输入的不是小小,就打不开。

MsgBox函数参考:

在对话框中显示消息,等待用户单击按钮,并返回一个Integer告诉用户单击哪一个按钮。

语法

MsgBox(prompt[,buttons][,title][,helpfile,context])

MsgBox函数的语法具有以下几个命名参数:

部分描述

Prompt必需的。

字符串表达式,作为显示在对话框中的消息。

prompt的最大长度大约为1024个字符,由所用字符的宽度决定。

如果prompt的容超过一行,则可以在每一行之间用回车符(Chr(13))、换行符(Chr(10))或是回车与换行符的组合(Chr(13)&Chr(10))将各行分隔开来。

Buttons可选的。

数值表达式是值的总和,指定显示按钮的数目及形式,使用的图标样式,缺省按钮是什么以及消息框的强制回应等。

如果省略,则buttons的缺省值为0。

Title可选的。

在对话框标题栏中显示的字符串表达式。

如果省略title,则将应用程序名放在标题栏中。

Helpfile可选的。

字符串表达式,识别用来向对话框提供上下文相关帮助的帮助文件。

如果提供了helpfile,则也必须提供context。

Context可选的。

数值表达式,由帮助文件的作者指定给适当的帮助主题的帮助上下文编号。

如果提供了context,则也必须提供helpfile。

设置值

buttons参数有下列设置值:

常数值描述

vbOKOnly0只显示OK按钮。

VbOKCancel1显示OK及Cancel按钮。

VbAbortRetryIgnore2显示Abort、Retry及Ignore按钮。

VbYesNoCancel3显示Yes、No及Cancel按钮。

VbYesNo4显示Yes及No按钮。

VbRetryCancel5显示Retry及Cancel按钮。

VbCritical16显示CriticalMessage图标。

VbQuestion32显示WarningQuery图标。

VbExclamation48显示WarningMessage图标。

VbInformation64显示InformationMessage图标。

vbDefaultButton10第一个按钮是缺省值。

vbDefaultButton2256第二个按钮是缺省值。

vbDefaultButton3512第三个按钮是缺省值。

vbDefaultButton4768第四个按钮是缺省值。

vbApplicationModal0应用程序强制返回;应用程序一直被挂起,直到用户对消息框作出响应才继续工作。

vbSystemModal4096系统强制返回;全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。

vbMsgBoxHelpButton16384将Help按钮添加到消息框

VbMsgBoxSetForeground65536指定消息框窗口作为前景窗口

vbMsgBoxRight524288文本为右对齐

vbMsgBoxRtlReading1048576指定文本应为在希伯来和阿拉伯语系统中的从右到左显示

第一组值(0–5)描述了对话框中显示的按钮的类型与数目;第二组值(16,32,48,64)描述了图标的样式;第三组值(0,256,512)说明哪一个按钮是缺省值;而第四组值(0,4096)则决定消息框的强制返回性。

将这些数字相加以生成buttons参数值的时候,只能由每组值取用一个数字。

注意这些常数都是VisualBasicforApplications(VBA)指定的。

结果,可以在程序代码中到处使用这些常数名称,而不必使用实际数值。

返回值

常数值描述

vbOK1OK

vbCancel2Cancel

vbAbort3Abort

vbRetry4Retry

vbIgnore5Ignore

vbYes6Yes

vbNo7No

说明

如果对话框显示Cancel按钮,则按下ESC键与单击Cancel按钮的效果相同。

如果对话框中有Help按钮,则对话框中提供有上下文相关的帮助。

但是,直到其它按钮中有一个被单击之前,都不会返回任何值。

注意如果还要指定第一个命名参数以外的参数,则必须在表达式中使用MsgBox。

为了省略某些位置参数,必须加入相应的逗号分界符。

一、通过录制宏生成代码

如果无法确定要使用的VisualBasic方法或属性,可打开宏录制器并进行手动操作。

宏录制器会将操作译成VisualBasic代码。

录制操作完成后,可根据需要修改代码。

例如,如果无法确定实现段落缩进的属性或方法,可执行下列操作:

1.在“工具”菜单上,指向“宏”,然后单击“录制新宏”。

2.如果需要,可更改默认的宏名称,然后单击“确定”启动录制器。

3.在“格式”菜单上,选定“段落”。

4.更改段落左缩进的值,然后单击“确定”。

5.单击“停止录制”工具栏上的“停止录制”按钮。

6.在“工具”菜单上,指向“宏”,然后单击“宏”。

7.从步骤2中选择宏的名称,然后单击“编辑”按钮。

查看VisualBasic代码来确定对应于段落左缩进的属性(LeftIndent属性)。

将插入点置于LeftIndent之中,并按F1或单击“帮助”按钮。

在帮助主题中,可以查看示例以及支持LeftIndent属性的对象(单击“应用于”)。

(从上面可以看出,录制宏是我们认识未知对象的很好方法之一)

说明

录制的宏使用Selection属性返回Selection对象。

例如,下列指令将所选段落缩进0.5英寸。

SubIndentParagraph()

Selection.ParagraphFormat.LeftIndent=InchesToPoints(0.5)

EndSub

您也可以修改录制的宏并与Range对象一起使用。

(我们在日常的使用中经常注意到:

在使用“本机上的模板”时的向导就大量使用了Selection对象,而不是Range对象!

难道说微软有更新层次的考虑?

我想可能是Selection对象更稳定,跨版本能力更强吧!

二、修改录制的VisualBasic宏

宏录制器是查找所需的VisualBasic方法和属性的非常方便的工具。

如果不知道使用何种属性或方法,可打开宏录制器,手动执行操作。

宏录制器会将操作译为VisualBasic代码。

但录制宏具有一些限制条件。

您不能录制下列容:

条件分支

变量指定

循环结构

自定义用户窗体

出错处理

用鼠标选定的文字(必须使用组合键)

若要增强宏的功能,可能需要修改录制到模块中的代码。

删除Selection属性

使用宏录制器创建的宏取决于所选容。

在大多数录制的宏指令的开头,可以看到“Selection”。

录制的宏使用Selection属性返回Selection对象。

例如,下列示例将所选容移动至Temp书签,并在书签之后插入文字。

SubMacro1()

Selection.GotoWhat:

=wdGotoBookmark,Name:

="Temp"

Selection.MoveRightUnit:

=wdCharacter,Count:

=1

'相当于选中后按一个键盘的右方向键

Selection.TypeTextText:

="Newtext"

EndSub

这个宏虽然可以完成任务,但是有一些缺点。

首先,如果文档中没有一个名为Temp的书签,该宏将导致出错。

其次,该宏可能不正确地移动所选容。

修改这个宏,使其不再使用Selection对象,就可解决上述两个问题。

以下就是经修改后的宏:

SubMyMacro()

IfActiveDocument.Bookmarks.Exists("Temp")=TrueThen

endloc=ActiveDocument.Bookmarks("Temp").End

ActiveDocument.Range(Start:

=endloc,_

End:

=endloc).InsertAfter"Newtext"

'_ 就是续行的意思

EndIf

EndSub

Exists方法用于检查是否存在名为Temp的书签。

如果找到该书签,则用End属性返回该书签结束字符的位置。

最后使用Range方法返回一个引用书签结束位置的Range对象,以使用InsertAfter方法插入文字。

有关定义Range对象的详细信息,请参阅处理Range对象。

使用With…EndWith

可使用With…EndWith结构简化引用相同对象的宏指令。

例如,在文档顶部添加标题时,将录制下面的宏。

SubMacro1()

Selection.HomeKeyUnit:

=wdStory

Selection.TypeTextText:

="Title"

Selection.ParagraphAlignment.Alignment=wdAlignParagraphCenter

EndSub

每个指令都使用Selection属性返回一个Selection对象。

可以简化这个宏,这样只需使用一次Selection属性。

SubMyMacro()

WithSelection

.HomeKeyUnit:

=wdStory

.TypeTextText:

="Title"

'.ParagraphAlignment.Alignment=wdAlignParagraphCenter

'上面那句是原帮助中的,但肯定是笔误!

微软没看出?

!

.ParagraphFormat.Alignment=wdAlignParagraphCenter

EndWith

EndSub

不使用Selection对象也可以完成相同的任务。

下面的宏在活动文档的开头使用Range对象来完成相同的任务。

SubMyMacro()

WithActiveDocument.Range(Start:

=0,End:

=0)

.InsertAfter"Title"

'.ParagraphAlignment.Alignment=wdAlignParagraphCenter

'上面那句是原帮助中的,但肯定是笔误!

微软没看出?

!

.ParagraphFormat.Alignment=wdAlignParagraphCenter

EndWith

EndSub

删除不必要的属性

如果录制了一个关于在对话框中选择选项的宏,即使只更改一个或两个选项,宏录制器也会记录该对话框中的所有选项的设置。

如果不希望更改所有的选项,可从录制的宏中删除不必要的属性。

下面录制的宏包含“段落”对话框的一些选项(单击“格式”菜单可显示该对话框的所有信息)。

SubMacro1()

WithSelection.ParagraphFormat

.LeftIndent=InchesToPoints(0)'左缩进0英寸

.RightIndent=InchesToPoints(0)'右缩进0英寸

.SpaceBefore=6'段前距6磅

.SpaceAfter=6'段后距6磅,下面不写了!

.LineSpacingRule=0

.Alignment=wdAlignParagraphLeft

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2