Word VBA学习交流资料之二.doc_第1页
Word VBA学习交流资料之二.doc_第2页
Word VBA学习交流资料之二.doc_第3页
Word VBA学习交流资料之二.doc_第4页
Word VBA学习交流资料之二.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

Word VBA 学习交流资料之二感想:有感于国人的Word水平比较低,尤其是VBA这一块,本人想请大家一起学习VBA,在提高自身的能力同时帮助需要帮助的人。感谢:绿叶的建群之功,也感谢you兄的热烈支持,更感谢大家的大力支持!学前必备:Word VBA帮助(2003或别的都行,大体相当)(没有也没有关系,在这里,大多看到的就是复制自“帮助”的。)可选工具:金山词霸(对E文不太懂的人,尤其重要)语法工具:共享区的“VBA一串通”学习方法:“不求甚解”(一开始,不太懂,没关系,坚持下去就懂了。)学习步骤:看到例子时,复制到VBE编辑器中运行一次,看一下结果(最好按F8,一步一步地看)必要指出:是“互学”,错误或不妥之处难免!因我也是一边看帮助,一边写。开始之前:高唱国歌(最好能喊:自强不息!)Start:一、通过录制宏生成代码如果无法确定要使用的 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 = InchesToPoints(0.5) End WithEnd Sub在 12 磅和无之间切换段前间距下列示例切换选定内容中第一段的段前间距。宏将获取当前段前间距的值,如果该值为 12 磅,则删除段前间距格式(将 SpaceBefore 属性设为零)。如果段前间距的值为除 12 外的其他数值,则将 SpaceBefore 属性设为 12 磅。Sub ToggleParagraphSpace() With Selection.Paragraphs(1) If .SpaceBefore 0 Then .SpaceBefore = 0 Else .SpaceBefore = 6 End If End WithEnd Sub切换加粗格式下列示例切换选定文本的加粗格式。Sub ToggleBold() Selection.Font.Bold = wdToggleEnd Sub将左边距增加 0.5 英寸下列示例将左边距和右边距增加 0.5 英寸。PageSetup 对象包含文档的所有的页面设置属性(左边距、下边距、纸张大小等)。LeftMargin 属性用于返回和设置左边距设置。RightMargin 属性用于返回和设置右边距设置。Sub FormatMargins() With ActiveDocument.PageSetup .LeftMargin = .LeftMargin + InchesToPoints(0.5) .RightMargin = .RightMargin + InchesToPoints(0.5) End WithEnd Sub九、查找并替换文字或格式通过 Find 和 Replacement 对象可实现查找和替换功能。Selection 和 Range 对象可以使用 Find 对象。从 Selection 或 Range 对象访问 Find 对象时,查找操作会略有不同。查找并选定文字如果从 Selection 对象访问 Find 对象,当找到搜索条件时,就会更改所选内容。下列示例选定下一个出现的“Hello”。如果到达文档结尾时仍未找到“Hello”,则停止搜索。With Selection.Find .Forward = True .Wrap = wdFindStop .Text = Hello .ExecuteEnd WithFind 对象包含与“查找和替换”对话框中的选项相关的属性(在“编辑”菜单上选择“查找”可显示该对话框)。可以设置 Find 对象单独的属性或使用 Execute 方法的参数,如下例所示。Selection.Find.Execute FindText:=Hello, _ Forward:=True, Wrap:=wdFindStop查找文字,但不更改所选内容如果从 Range 对象访问 Find 对象,则找到搜索条件时,不更改所选内容,但是会重新定义 Range 对象。下列示例在活动文档中查找第一个出现的“blue”。如果找到该单词,则重新定义该区域,并将加粗格式应用于单词“blue”。With ActiveDocument.Content.Find .Text = blue .Forward = True .Execute If .Found = True Then .Parent.Bold = TrueEnd With下列示例使用 Execute 方法的参数,执行结果与上例相同。Set myRange = ActiveDocument.ContentmyRange.Find.Execute FindText:=blue, Forward:=TrueIf myRange.Find.Found = True Then myRange.Bold = True使用 Replacement 对象Replacement 对象代表查找和替换操作的替换条件。Replacement 对象的属性和方法对应于“查找和替换”对话框中的选项(单击“编辑”菜单中的“查找”或“替换”命令可显示该对话框)。可通过 Find 对象使用 Replacement 对象。下列示例将所有单词“hi”替换为“hello”。由于 Find 对象是通过 Selection 对象访问的,所以当找到搜索条件时,会更改所选内容。With Selection.Find .ClearFormatting .Text = hi .Replacement.ClearFormatting .Replacement.Text = hello .Execute Replace:=wdReplaceAll, Forward:=True, _ Wrap:=wdFindContinueEnd With下列示例取消活动文档中的加粗格式。Find 对象的 Bold 属性为 True,而 Replacement 对象的该属性为 False。若要查找并替换格式,可将查找和替换文字设为空字符串 (),并将 Execute 方法的 Format 参数设为 True。由于从 Range 对象访问 Find 对象,所选内容将保持不变(Content 属性返回一个 Range 对象)。With ActiveDocument.Content.Find .ClearFormatting .Font.Bold = True With .Replacement .ClearFormatting .Font.Bold = False End With .Execute FindText:=, ReplaceWith:=, _ Format:=True, Replace:=wdReplaceAllEnd With上面的查找与替换是重点!他能解决很多的替换问题。举例:原地址是:/dispbbs.asp?boardID=23&ID=153805&page=1摘题目:怎样用宏统计word文件中某一个汉字,例如“的”字出现的数量?(可以这样:新建一个文档,输入“=rand(50,50)”,再按回车(不包括双引号“”),则产生了虚拟文本,在此虚拟文本中试验)方法有三:Sub getfoundcount1() Dim a As Range, i% Dim c, d c = Timer 设C为运行前的时间 For Each a In ActiveDocument.Characters 在字符间循环 If a Like 的 Then 如果是“的” i = i + 1 则加上,i的初始值是0,不用设的,默认 End If Next d = Timer c 用现在的时间减去运行前的时间等于用时 MsgBox Word 找到 & i & 个与此条件相匹配的项!, vbInformation, dEnd Sub上面此法利用循环比较字符是否是的是“的”字,来判断!用时下面的图形的标题栏 图表 1Sub GetFoundCount2() Dim FoundCount As Integer, myFindText As String Dim a, b a = Timer myFindText = 的 With ActiveDocument.Content.Find .Text = myFindText 要查找的字符 .MatchWildcards = False 通配符为不勾选 .Wrap = wdFindStop 当查找到后停止,就是每次缩小范围 Do While .Execute 当查找时则累加 FoundCount = FoundCount + 1 Loop End With b = Timer - a Debug.Print b Debug.Print FoundCount MsgBox Word 找到 & FoundCount & 个与此条件相匹配的项!, vbInformation, bEnd Sub上面是标准的用查找来判断累加,(也是老大的代码)图表 2Sub getfoundcount3()Dim a, b, c, d, e, f d = Timer a = ActiveDocument.Range.Text f = VBA.Asc(的) 取得“的”的Ascii码 b = Split(a, Chr(f) 用此Ascii码来分裂 c = UBound(b) 取得上限 e = Timer d 取得时间 Debug.Print e 这个是输出到调试区的 Debug.Print c 这个也是 MsgBox Word 找到 & c & 个与此条件相匹配的项!, vbInformation, eEnd Sub上面是利用数组,把“的”看成是用于split数组的字符,通过是判断数组的上限来判断是几位数组,即是几个“的”。图表 3Sub GetFoundCount4() Dim strText As String, myText As String Dim lngOld As Long, lngNew As Long Dim Times As Single Times = VBA.Timer strText = ActiveDocument.Content.Text myText = 的 lngOld = Len(strText) 包括“的”的长度 lngNew = Len(Replace(strText, myText, ) 替换“的”后的长度 MsgBox Word 找到 & lngOld - lngNew & 个与此条件相匹配的项!, vbInformation, VBA.Timer - TimesEnd Sub图表 4(上面是老大又写了一个,老大随后的代码的运行速度更是十分惊人)两种方法运行最高。一个是0.1秒与一个是6秒,效率是可想而知!大家试试!十、从文档返回文本使用 Text 属性可以返回 Range 或 Selection 对象中的文本。下列示例选定下一个格式设为“标题 1”样式的段落。然后通过 MsgBox 函数显示 Text 属性的内容。Sub FindHeadingStyle() With Selection.Find .ClearFormatting .Style = wdStyleHeading1 .Execute FindText:=, Format:=True, _ Forward:=True, Wrap:=wdFindStop If .Found = True Then MsgBox Selection.Text End WithEnd Sub下列指令返回并显示选定的文本。Sub ShowSelection() Dim strText As String strText = Selection.Text MsgBox strTextEnd Sub下列示例返回活动文档中的第一个单词。Words 集合中的每一项是代表一个单词的 Range 对象。Sub ShowFirstWord() Dim strFirstWord As String strFirstWord = ActiveDocument.Words(1).Text MsgBox strFirstWordEnd Sub下列示例返回与活动文档中第一个书签相关联的文本。Sub ShowFirstBookmark() Dim strBookmark As String If ActiveDocument.Bookmarks.Count 0 Then strBookmark = ActiveDocument.Bookmarks(1).Range.Text MsgBox strBookmark End IfEnd SubInputBox 函数在一对话框来中显示提示,等待用户输入正文或按下按钮,并返回包含文本框内容的 String。语法InputBox(prompt, title , default , xpos , ypos , helpfile, context) InputBox 函数的语法具有以下几个命名参数:部分描述Prompt必需的。作为对话框消息出现的字符串表达式。prompt 的最大长度大约是 1024 个字符,由所用字符的宽度决定。如果 prompt 包含多个行,则可在各行之间用回车符 (Chr(13)、换行符 (Chr(10) 或回车

温馨提示

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

评论

0/150

提交评论