Word-VBA-学习交流资料(全).doc_第1页
Word-VBA-学习交流资料(全).doc_第2页
Word-VBA-学习交流资料(全).doc_第3页
Word-VBA-学习交流资料(全).doc_第4页
Word-VBA-学习交流资料(全).doc_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Word VBA 学习交流资料目录一、对象模型打开Word VBA帮助,首先看到的是“Word的对象模型”(如下所示)图表 1知识点:知道Application对象(Word应该程序的总对象)、Doctuments对象(文档集对象)、Paragraphs对象(段落集)、Selection(选中区域)对象、Tables(表格)对象、Sections(节,即Word的第一节)对象、Headers(页眉)对象。二、新增功能(略)原因:我们的初衷大多是从“零”开始,最基础的我们都不知道,何来“新增”啊?但是,以后学到相关的知识时,会跳到这里,学一些新增的“对象”、“方法”、“事件”、“属性”等。三、编程概念对象是 Visual Basic 的结构基础,在 Visual Basic 中进行的所有操作几乎都与修改对象有关。Microsoft Word 的任何元素,如文档、表格、段落、书签、域等,都可用 Visual Basic 中的对象来表示。什么是对象和集合?对象代表一个 Word 元素,如文档、段落、书签或单独的字符。集合也是一个对象,该对象包含多个其他对象,通常这些对象属于相同的类型;例如,一个集合对象中可包含文档中的所有书签对象。通过使用属性和方法,可以修改单独的的对象,也可修改整个的对象集合。例如:ActiveDocument.Paragraphs(2).Range.Characters(1).Font.Color = wdColorRed在Word 的VBA中,大多数对象都是通过Application来访问,但有几个可以直接访问:如activedocumnet、documents等,当然通过application对象也行,但无疑后者更简略。什么是属性?属性是对象的一种特性或该对象行为的一个方面。例如,文档属性包含其名称、内容、保存状态以及是否启用修订。若要更改一个对象的特征,可以修改其属性值。若要设置属性的值,可在对象的后面紧接一个句号、属性名称、一个等号及新的属性值。下列示例在名为“MyDoc.doc”的文档中启用修订。Sub TrackChanges() Documents(Sales.doc).TrackRevisions = TrueEnd Sub在本例中,Documents 引用由打开的文档(注意是对打开后文档的操作)构成的集合,而“MyDoc.doc”标识集合中单独的文档。并设置该文档的 TrackRevisions 属性。不能设置某些属性。属性的“帮助”主题中会标明可以设置该属性(可读写),或只能读取该属性(只读)。通过返回对象的一个属性值,可以获取有关该对象的信息。下列示例返回活动文档的名称。Sub GetDocumentName() Dim strDocName As String strDocName = ActiveDocument.Name MsgBox strDocNameEnd Sub(这个例子输出的没有路径,只有名字.若带路径的话,把strDocName = ActiveDocument.Name改为:strDocName = ActiveDocument.Path & ActiveDocument.Name)在本例中,ActiveDocument 引用 Word 活动窗口中的文档。该文档的名称赋给了 strDocName 变量。说明:每个属性的“帮助”主题表明可以设置该属性(可读写),只能读取该属性(只读),或只能写入该属性(只写)。此外“Visual Basic 编辑器”中的“对象浏览器”在浏览窗口的底部显示所选属性的读写状态。什么是方法?方法是对象可以执行的动作。例如,只要文档可以打印,Document 对象就具有 PrintOut 方法。方法通常带有参数,以限定执行动作的方式。下列示例打印活动文档的前三页。Sub PrintThreePages() ActiveDocument.PrintOut Range:=wdPrintRangeOfPages, Pages:=1-3End Sub在大多数情况下,方法是动作,而属性是性质。使用方法将导致发生对象的某些事件(所以,有人说:“方法是集成了的事件”),而使用属性则会返回对象的信息,或引起对象的某个性质的改变。返回一个对象可通过返回集合中单独的对象的方式来返回大多数对象。例如 Documents 集合包含打开的 Word 文档。可使用(位于 Word 对象结构顶层的)Application 对象的 Documents 属性返回 Documents 集合。在访问集合之后,可以通过在括号中使用索引序号(与处理数组的方式相似)返回单独的对象。索引序号通常是一个数值或名称。详细内容,请参阅返回集合中的对象。下列示例使用 Documents 属性访问 Documents 集合。索引序号用于返回 Documents 集合中的第一篇文档。然后将 Close 方法应用于 Document 对象,关闭 Documents 集合中的第一篇文档。Sub CloseDocument() Documents(1).CloseEnd Sub这个可能以后大多不用,原因就是索引序号在变,当打开、关闭一个文档时,对应的序号就增加或减少了数字,所以不好把握,大多不用。下列示例使用名称(指定为一个字符串)来识别 Documents 集合中的 Document 对象。Sub CloseSalesDoc() Documents(Sales.doc).CloseEnd Sub这个常用,让某个指定的文档关闭。集合对象通常具有可用于修改整个对象集合的方法和属性。Documents 对象具有 Save 方法,可用于保存集合中的所有文档。下列示例通过使用 Save 方法保存所有打开的文档。Sub SaveAllOpenDocuments() Documents.SaveEnd Sub所有的文档保存,相当于按住Shift再点击文件下的全部保存命令。Document 对象也可使用 Save 方法保存单独的文档。下列示例保存名为 Sales.doc 的文档。Sub SaveSalesDoc() Documents(Sales.doc).SaveEnd Sub对指定的文档保存。若要返回一个处于 Word 对象结构底层的对象,就必须使用可返回对象的属性和方法,“深入”到该对象。若要查看该过程的执行,请打开“Visual Basic 编辑器”,在“视图”菜单上单击“对象浏览器”。单击左侧“类”列表中的 Application。然后单击右侧“成员”列表中的 ActiveDocument。“对象浏览器”底部会显示文字,表明 ActiveDocument 是只读的,该属性返回 Document 对象。然后单击“对象浏览器”底部的 Document,则会在“类”列表中自动选定 Document 对象,并将在“成员”列表中显示 Document 对象的成员。滚动成员列表,找到 Close,单击 Close 方法。“对象浏览器”窗口底部会显示文字,说明该方法的语法。有关该方法的详细内容,请按 F1 (作者注:不把F1磨平,VBA很难真正掌握-)或单击“帮助”按钮,以跳转到 Close 方法的“帮助”主题。根据这些信息可编写下列指令,以关闭活动文档。Sub CloseDocSaveChanges() ActiveDocument.Close SaveChanges:=wdSaveChangesEnd Sub关闭并保存改变。这里显然,保存为方法,后面有参数下列示例将活动文档窗口最大化。Sub MaximizeDocumentWindow() ActiveDocument.ActiveWindow.WindowState = wdWindowStateMaximizeEnd Sub这个是赋最大化值属性给活动窗口ActiveWindow 属性返回一个 Window 对象,该对象代表活动窗口。将 WindowState 属性设为最大常量(wdWindowStateMaximize)。下列示例新建一篇文档,并显示“另存为”对话框,这样即可为文档提供一个名称。Sub CreateSaveNewDocument() Documents.Add.SaveEnd Sub这个有意思,添加新文档并保存,一步,利害吧如果不是看帮助,你敢这么用吗?方法.方法Documents 属性返回 Documents 集合。Add 方法新建一篇文档,并返回一个 Document 对象。然后对 Document 对象应用 Save 方法。如上所示,可以使用方法或属性来访问下层对象。也就是说,在对象结构中,将方法或属性应用于某个对象的上一级对象,可返回该下级对象。返回所需对象之后,就可以应用该对象的方法并控制其属性。要查看对象结构分层的情况,请参阅 Microsoft Word 对象。获得有关对象、方法和属性的“帮助”信息在熟悉 Word 对象模型之前,可以利用一些工具来深入了解对象结构。自动成员列表。(重要)在“Visual Basic 编辑器”中,在对象后面键入句号 (.) 后,即显示可用的属性和方法的列表。例如,如果键入“Application.”,就会显示 Application 对象的方法和属性的下拉列表。 帮助。也可以使用“帮助”找到可应用于对象的属性和方法。“帮助”中的每个对象主题都包含一个“参阅”跳转,以显示该对象的属性和方法列表。在“对象浏览器”或某一模块中按 F1,可跳转到相应的“帮助”主题。 Microsoft Word 对象。该主题阐明在分级结构中 Word 对象的排列方式。在结构图中单击一个对象,可显示相应的“帮助”主题。 对象浏览器。“Visual Basic 编辑器”中的“对象浏览器”显示 Word 对象的成员(属性和方法)。-实例:打开Word后,按Alt+F11,出现VBE窗口,双击右边的Thisdocument(当然,放到底下的模块中任一个也行),输入如下内容:Sub autoexec() Application.Caption = 我爱我家!End Sub这时,关闭Word,再打开Word。你的标题就有“.doc我爱我家!”了!图表 2当然,也可以进一步做成这样:Sub autoexec()Dim a a = MsgBox(我家我家, vbYesNo, 这是一个试验) If a 6 Then Application.Quit End IfEnd Sub功能就是打开Word时,显示此对话框,如果点了“是”就不作处理即打开Word,否则,退出Quit。也可以写成这样:Sub autoexec()Dim a a = InputBox(你的姓名, 防君子,不防小人!) If a 小小 Then Application.Quit End IfEnd Sub功能就是打开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 参数有下列设置值:常数 值 描述 vbOKOnly 0只显示 OK 按钮。 VbOKCancel 1显示 OK 及 Cancel 按钮。 VbAbortRetryIgnore 2显示 Abort、Retry 及 Ignore 按钮。 VbYesNoCancel 3显示 Yes、No 及 Cancel 按钮。 VbYesNo 4显示 Yes 及 No 按钮。 VbRetryCancel 5显示 Retry 及 Cancel 按钮。 VbCritical 16显示 Critical Message 图标。 VbQuestion 32显示 Warning Query 图标。 VbExclamation 48显示 Warning Message 图标。 VbInformation 64显示 Information Message 图标。 vbDefaultButton1 0第一个按钮是缺省值。 vbDefaultButton2 256第二个按钮是缺省值。 vbDefaultButton3 512第三个按钮是缺省值。 vbDefaultButton4 768第四个按钮是缺省值。 vbApplicationModal 0 应用程序强制返回;应用程序一直被挂起,直到用户对消息框作出响应才继续工作。 vbSystemModal 4096 系统强制返回;全部应用程序都被挂起,直到用户对消息框作出响应才继续工作。 vbMsgBoxHelpButton 16384 将Help按钮添加到消息框 VbMsgBoxSetForeground 65536 指定消息框窗口作为前景窗口 vbMsgBoxRight 524288 文本为右对齐 vbMsgBoxRtlReading 1048576 指定文本应为在希伯来和阿拉伯语系统中的从右到左显示 第一组值 (05) 描述了对话框中显示的按钮的类型与数目;第二组值 (16, 32, 48, 64) 描述了图标的样式;第三组值 (0, 256, 512) 说明哪一个按钮是缺省值;而第四组值 (0, 4096) 则决定消息框的强制返回性。将这些数字相加以生成 buttons 参数值的时候,只能由每组值取用一个数字。注意 这些常数都是 Visual Basic for Applications (VBA) 指定的。结果,可以在程序代码中到处使用这些常数名称,而不必使用实际数值。返回值常数 值 描述 vbOK1 OK vbCancel 2 Cancel vbAbort 3 Abort vbRetry 4 Retry vbIgnore 5 Ignore vbYes6 Yes vbNo 7 No 说明如果对话框显示 Cancel 按钮,则按下 ESC 键与单击 Cancel 按钮的效果相同。如果对话框中有 Help 按钮,则对话框中提供有上下文相关的帮助。但是,直到其它按钮中有一个被单击之前,都不会返回任何值。注意 如果还要指定第一个命名参数以外的参数,则必须在表达式中使用 MsgBox。为了省略某些位置参数,必须加入相应的逗号分界符。一、通过录制宏生成代码如果无法确定要使用的 Visual Basic 方法或属性,可打开宏录制器并进行手动操作。宏录制器会将操作译成 Visual Basic 代码。录制操作完成后,可根据需要修改代码。例如,如果无法确定实现段落缩进的属性或方法,可执行下列操作:1. 在“工具”菜单上,指向“宏”,然后单击“录制新宏”。 2. 如果需要,可更改默认的宏名称,然后单击“确定”启动录制器。 3. 在“格式”菜单上,选定“段落”。 4. 更改段落左缩进的值,然后单击“确定”。 5. 单击“停止录制”工具栏上的“停止录制”按钮。 6. 在“工具”菜单上,指向“宏”,然后单击“宏”。 7. 从步骤 2 中选择宏的名称,然后单击“编辑”按钮。 查看 Visual Basic 代码来确定对应于段落左缩进的属性(LeftIndent 属性)。将插入点置于 LeftIndent 之中,并按 F1 或单击“帮助”按钮。在帮助主题中,可以查看示例以及支持 LeftIndent 属性的对象(单击“应用于”)。(从上面可以看出,录制宏是我们认识未知对象的很好方法之一)说明录制的宏使用 Selection 属性返回 Selection 对象。例如,下列指令将所选段落缩进 0.5 英寸。Sub IndentParagraph() Selection.ParagraphFormat.LeftIndent = InchesToPoints(0.5)End Sub您也可以修改录制的宏并与 Range 对象一起使用。(我们在日常的使用中经常注意到:在使用“本机上的模板”时的向导就大量使用了Selection对象,而不是Range对象!难道说微软有更新层次的考虑?我想可能是Selection对象更稳定,跨版本能力更强吧!)二、修改录制的 Visual Basic 宏宏录制器是查找所需的 Visual Basic 方法和属性的非常方便的工具。如果不知道使用何种属性或方法,可打开宏录制器,手动执行操作。宏录制器会将操作译为 Visual Basic 代码。但录制宏具有一些限制条件。您不能录制下列内容:条件分支 变量指定 循环结构 自定义用户窗体 出错处理 用鼠标选定的文字(必须使用组合键) 若要增强宏的功能,可能需要修改录制到模块中的代码。删除 Selection 属性使用宏录制器创建的宏取决于所选内容。在大多数录制的宏指令的开头,可以看到“Selection”。录制的宏使用 Selection 属性返回 Selection 对象。例如,下列示例将所选内容移动至 Temp 书签,并在书签之后插入文字。Sub Macro1() Selection.Goto What:=wdGotoBookmark, Name:=Temp Selection.MoveRight Unit:=wdCharacter, Count:=1 相当于选中后按一个键盘的右方向键 Selection.TypeText Text:=New textEnd Sub这个宏虽然可以完成任务,但是有一些缺点。首先,如果文档中没有一个名为 Temp 的书签,该宏将导致出错。其次,该宏可能不正确地移动所选内容。修改这个宏,使其不再使用 Selection 对象,就可解决上述两个问题。以下就是经修改后的宏:Sub MyMacro()If ActiveDocument.Bookmarks.Exists(Temp) = True Then endloc = ActiveDocument.Bookmarks(Temp).End ActiveDocument.Range(Start:=endloc, _ End:=endloc).InsertAfter New text_就是续行的意思End IfEnd SubExists 方法用于检查是否存在名为 Temp 的书签。如果找到该书签,则用 End 属性返回该书签结束字符的位置。最后使用 Range 方法返回一个引用书签结束位置的 Range 对象,以使用 InsertAfter 方法插入文字。有关定义 Range 对象的详细信息,请参阅处理 Range 对象。使用 WithEnd With可使用 WithEnd With 结构简化引用相同对象的宏指令。例如,在文档顶部添加标题时,将录制下面的宏。Sub Macro1() Selection.HomeKey Unit:=wdStory Selection.TypeText Text:=Title Selection.ParagraphAlignment.Alignment = wdAlignParagraphCenterEnd Sub每个指令都使用 Selection 属性返回一个 Selection 对象。可以简化这个宏,这样只需使用一次 Selection 属性。Sub MyMacro() With Selection .HomeKey Unit:=wdStory .TypeText Text:=Title .ParagraphAlignment.Alignment = wdAlignParagraphCenter 上面那句是原帮助中的,但肯定是笔误!微软没看出?! .ParagraphFormat.Alignment = wdAlignParagraphCenter End WithEnd Sub不使用 Selection 对象也可以完成相同的任务。下面的宏在活动文档的开头使用 Range 对象来完成相同的任务。Sub MyMacro() With ActiveDocument.Range(Start:=0, End:=0) .InsertAfter Title .ParagraphAlignment.Alignment = wdAlignParagraphCenter 上面那句是原帮助中的,但肯定是笔误!微软没看出?! .ParagraphFormat.Alignment = wdAlignParagraphCenter End WithEnd Sub删除不必要的属性如果录制了一个关于在对话框中选择选项的宏,即使只更改一个或两个选项,宏录制器也会记录该对话框中的所有选项的设置。如果不希望更改所有的选项,可从录制的宏中删除不必要的属性。下面录制的宏包含“段落”对话框的一些选项(单击“格式”菜单可显示该对话框的所有信息)。Sub Macro1() With Selection.ParagraphFormat .LeftIndent = InchesToPoints(0) 左缩进0英寸 .RightIndent = InchesToPoints(0) 右缩进0英寸 .SpaceBefore = 6 段前距6磅 .SpaceAfter = 6 段后距6磅,下面不写了! .LineSpacingRule = 0 .Alignment = wdAlignParagraphLeft .WidowControl = True .KeepWithNext = False .KeepTogether = False .PageBreakBefore = False .NoLineNumber = False .Hyphenation = True .FirstLineIndent = InchesToPoints(0) .OutlineLevel = 10 End WithEnd Sub但是,如果只需更改段前和段后间距,可将宏更改为:Sub MyMacro() With Selection.ParagraphFormat .SpaceBefore = 6 .SpaceAfter = 6 End WithEnd Sub因为只设置了较少的属性,所以简化后的宏运行得更快。运行结果只更改选定段落的段前和段后的间距,所有其他设置都没有改变。(注意:如果你是一个喜欢乱动的人,还是要上面吧,但他的速度肯定没有下面的快,但他的适合环境更大.更所谓忠孝难两全啊-)删除不必要的参数当宏录制器记录一个方法时,会包含所有参数的值。打开名为 Test.doc 的文档时,录制了下面的宏。所得到的宏包含 Open 方法的所有参数。Sub Macro1() Documents.Open FileName:=C:My DocumentsTest.doc, _ ConfirmConversions:= False, ReadOnly:=False, _ AddToRecentFiles:=False, PasswordDocument:=, _ PasswordTemplate:=, Revert:=False, _ WritePasswordDocument:=, _ WritePasswordTemplate:=, Format:=wdOpenFormatAutoEnd Sub可以从录制的宏中删除不需要的参数。例如,可以删除所有设置为空字符串的参数(如 WritePasswordDocument:=),如下所示。Sub MyMacro() Documents.Open FileName:=C:My DocumentsTest.doc, _ ConfirmConversions:= False, _ ReadOnly:=False, AddToRecentFiles:=False, _ Revert:=False, Format:=wdOpenFormatAutoEnd Sub三、自动运行的宏通过为一个宏赋予某个特殊的名称,就可在执行某项操作(例如启动 Word 或打开文档)时自动运行宏。Word 将下列名称识别为自动宏,或称“auto”宏。宏名运行条件AutoExec启动 Word 或加载全局模板时AutoNew每次新建文档时AutoOpen每次打开已有文档时AutoClose每次关闭文档时AutoExit退出 Word 或卸载全局模板时当以下条件之一为真时,将识别代码模块中的自动宏。 模块在自动宏(如 AutoExec)之后命名,并且包含一个名为“Main”的过程。 任何模块中的过程在自动宏之后命名。 与其他宏一样,自动宏也可以保存于 Normal 模板、其他模板或文档中。要让自动宏运行,它必须位于活动文档的 Normal 模板中,或活动文档选用的模板中。唯一例外的是 AutoExec 宏,它只有存储于以下位置时才可自动运行:Normal 模板、通过“模板和加载项”对话框全局加载的模板、或由“Startup”文件夹指定的文件夹中的全局模板。在命名冲突的情况下(多个自动宏名相同),Word 将运行上下文中最近的自动宏。例如,如果同时在文档及其附加的模板中创建了 AutoClose 宏,则仅执行文档中的自动宏。如果在 Normal 模板中创建了 AutoNew 宏,只有当文档或其附加模板中没有名为 AutoNew 的宏时,该自动宏才能运行。(笔者注:简称就近原则!)注释按住 Shift 可以终止自动宏的运行。例如,基于包含 AutoNew 宏的模板新建文档时,按住 Shift 可终止 AutoNew 宏的运行。方法是:按住 Shift,单击(“文件”菜单)“新建”对话框中的“确定”按钮,并在显示新文档前持续按住 Shift。如果运行一个宏时有可能触发自动宏,(这种情况,我没遇过!)可用下列指令终止自动宏的运行:WordBasic.DisableAutoMacros四、修改 Word 命令大多数 Word 命令都可通过转换为宏的方式对其进行修改。例如,可修改“文件”菜单上的“打开”命令,使其不再显示 Word 文档文件列表(扩展名为 .doc 的文件),而显示当前文件夹中的所有文件。若要在“宏”对话框中显示内置 Word 命令列表,可在“宏的位置”框中选定“Word 命令”。显示的命令列表中包含所有的菜单命令、工具栏命令或快捷键命令。菜单命令名称以相关的菜单名称开头。例如,“文件”菜单中的“保存”命令显示为“FileSave”。方法是工具/宏/宏通过将一个宏命名为与 Word 命令相同的名称,就可用宏替代 Word 命令。例如,如果创建一个名为“FileSave”的宏,当选择“文件”菜单上的“保存”命令、单击“保存”工具栏按钮,或按“保存文件”快捷键时,Word 将运行该宏。本示例介绍了修改 FileSave 命令的步骤。1. 在“工具”菜单上,指向“宏”,然后单击“宏”。 2. 在“宏的位置”框中,选择“Word 命令”。 3. 在“宏名”框中,选择“FileSave”。 4. 在“宏的位置”框中选择一个模板或文档以保存该宏。例如,选择 Normal.dot(全局模板)可生成一个共用宏(即修改所有文档的“FileSave”命令)。5. 单击“创建”按钮。 FileSave 宏显示如下:Sub FileSave() FileSave Macro Saves the active document or template ActiveDocument.SaveEnd Sub可添加指令或删除现有的 ActiveDocument.Save 指令。之后在运行“FileSave”命令时,新的 FileSave 宏将取代 word 命令。若要恢复“FileSave”原有的功能,需重新命名新的 FileSave 宏或将之删除。说明: 也可以创建与 Word 命令同名的代码模块(例如 FileSave)并包含名为 Main 的子程序,以此替换 Word 命令。五、将文本插入文档使用 InsertAfter 或 InsertBefore 方法在 Selection 或 Range 对象之前或之后插入文字。下列示例在活动文档的末尾插入文字。Sub InsertTextAtEndOfDocument() ActiveDocument.Content.InsertAfter Text:= The end.End Sub下列示例在所选内容之前插入文字。Sub AddTextBeforeSelection() Selection.InsertBefore Text:=new text End SubRange 对象或 Selection 对象在使用了 InsertBefore 或 InsertAfter 方法之后,会扩展并包含新的文本。使用 Collapse 方法可以将 Selection 或 Range 折叠到开始或结束位置。六、选定文档中的文本可使用 Select 方法选定文档中的对象。Select 方法可用于多种对象,例如 Bookmark、Field、Range 和 Table 对象。下列示例选定活动文档中的第一个表格。Sub SelectTable() ActiveDocument.Tables(1).SelectEnd Sub下列示例选定活动文档中的第一个域。Sub SelectField() ActiveDocument.Fields(1).SelectEnd Sub下列示例选定活动文档中的前四个段落。Range 方法用于创建一个引用前四个段落的 Range 对象,然后将 Select 方法应用于 Range 对象。Sub SelectRange() Dim rngParagraphs As Range Set rngParagraphs = ActiveDocument.Range( _ Start:=ActiveDocument.Paragraphs(1).Range.Start, _ End:=ActiveDocument.Paragraphs(4).Range.End) rngParagraphs.SelectEnd Sub选定文档中的文本:我觉得用处不大,原因就是为什么要选中呢?能操作就直接操作,不能的话,就选中吧(他可以说是没办法的办法).七、编辑文字本主题包含与下列任务相关的 Visual Basic 示例: 确定文本是否被选定 折叠选定内容或区域 扩展选定内容或区域 重新定义 Range 对象 更改文本 有关其他编辑任务的信息和示例,请参阅下列主题:从文档返回文本 选定文档中的文本 将文本插入文档 修改文档的某一部分 确定文本是否被选定Selection 对象的 Type 属性返回所选内容类型的信息。如果所选内容为插入点,则下列示例显示一条消息Nothing is Selected。没选中任何问题Sub IsTextSelected() If Selection.Type = wdSelectionIP Then MsgBox Nothing is selectedEnd Sub折叠所选内容或区域使用 Collapse 方法可将 Selection 或 Range 对象折叠到开始或结束点的位置。下列示例在所选内容的开头将所选内容折叠为一个插入点。Sub CollapseToBeginning()Selection.Collapse Direction:=wdCollapseStartSelection.Collapse Direction:=wdCollapseEndEnd Sub这个是标准的折叠的程序,以后可能会用到的噢!下列示例将区域折叠至其结束点(在第一个单词之后),并添加新文本。Sub CollapseToEnd() Dim rngWords As Range Set rngWords = ActiveDocument.Words(1) 设置第一个单词为区域rngWords With rngWords .Collapse Direction:=wdCollapseEnd 折叠到最后,区域与可以折叠的噢! .Text = (This is a test.) 在折叠的最后加入这些文字 End WithEnd Sub扩展所选内容或区域下列示例使用 MoveEnd 方法扩展所选内容的结尾以包含三个附加的单词(总共是4个!)。MoveLeft、MoveRight、MoveUp 和 MoveDown 方法也可以用于扩展 Selection 对象。Sub ExtendSelection() Selection.MoveEnd Unit:=wdWord, Count:=3End Sub下列示例使用 MoveEnd 方法扩展区域,以包含活动文档中的前三个段落。Sub ExtendRange() Dim rngParagraphs As Range Set rngParagraphs = ActiveDocument.Paragraphs(1).Range rngParagraphs.MoveEnd Unit:=wdParagraph, Count:=2End Sub重新定义 Range 对象使用 SetRange 方法可重新定义现有的 Range 对象。更改文字通过更改某一区域中的内容可更改现有的文字。下列指令通过将 Text 属性设为“The”来更改活动文档中的第一个单词。Sub ChangeText() ActiveDocument.Words(1).Text = The End Sub也可以使用 Delete 方法删除现有文本,然后使用 InsertAfter 或 InsertBefore 方法插入新文本。下列示例删除活动文档的第一段,并插入新文本。Sub DeleteText() Dim rngFirstParagraph As Range Set rngFirstParagraph = ActiveDocument.Paragraphs(1).Range With rngFirstParagraph .Delete .InsertAfter Text:=New text .InsertParagraphAfter End WithEnd Sub上面的这个例子我们通常不用,我们更喜欢用下面Sub DeleteText1() Dim rngFirstParagraph As Range Set rngFirstParagraph = ActiveDocument.Paragraphs(1).Range rngFirstParagraph.Text = New text & Chr(13)End Sub八、将格式应用于文本本主题包含与下列任务相关的 Visual Basic 示例: 将格式应用于选定内容 将格式应用于某一区域 插入文本并应用字符和段落格式 在 12 磅和无之间切换段前间距 切换加粗格式 将左边距增加 0.5 英寸 将格式应用于选定内容下列示例使用 Selection 属性将字符和段落格式应用于选定文本。使用 Font 属性获得字体格式的属性和方法,使用 ParagraphFormat 属性获得段落格式的属性和方法。Sub FormatSelection() With Selection.Font .Name = Times New Roman .Size = 14 .AllCaps = True 全部大写 End With With Selection.ParagraphFormat .LeftIndent = InchesToPoints(0.5) 左缩进0.5英寸 .Space1 这是单倍行距的缩写 End WithEnd Sub将格式应用于某一区域下列示例定义了一个 Range 对象,它引用了活动文档的前三个段落。通过应用 Font 和 ParagraphFormat 对象的属性来设置 Range 对象的格式。Sub FormatRange() Dim rngFormat As Range Set rngFormat = ActiveDocument.Range( _ Start:=ActiveDocument.Paragraphs(1).Range.Start, _ End:=ActiveDocument.Paragraphs(3).Range.End) With rngFormat .Font.Name = Arial .ParagraphFormat.Alignment = wdAlignParagraphJustify 两端对齐 End WithEnd Sub插入文字并应用字符和段落格式下列示例在当前文档的上部添加单词 Title。第一段居中对齐,并在该段落之后添加半英寸的间距。将单词 Title 的格式设为 24 磅 Arial 字体。Sub InsertFormatText() Dim rngFormat As Range Set rngFormat = ActiveDocument.Range(Start:=0, End:=0) With rngFormat .InsertAfter Text:=Title .InsertParagraphAfter 插入段落标记 With .Font .Name = Tahoma .Size = 24 .Bold = True End With End With With ActiveDocument.Paragraphs(1) .Alignment = wdAlignParagraphCenter .SpaceAfter = InchesToPoi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论