ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:25.83KB ,
资源ID:5024495      下载积分:2 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5024495.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Word VBA 学习交流三.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Word VBA 学习交流三.docx

1、Word VBA 学习交流三Word VBA 学习交流(三) Word VBA 学习交流(三) 2008-01-08 21:00:35| 分类: Office办公软件 |字号 订阅 Word VBA 学习交流 将 Range 对象赋给变量有多种方法将现有的 Range 对象赋给变量。本主题对两种不同的方法进行了阐述。在下列示例中,将 Range 对象赋给变量 Range1 和 Range2。例如,下列指令(通俗的话就是:下列语句)将活动文档中的第一个和第二个单词赋给变量 Range1 和 Range2。Set Range1 = ActiveDocument.Words(1)Set Range2

2、 = ActiveDocument.Words(2)注意:1. Words对象是Range对象,它不存在Word对象,你可以这样命名:dim word1 as range,,但是dim word1 as word是不行的,也是错的。2. Words直观的说就是单词,那么,什么是单词呢?中文中没有单词的概念啊!可以这样来理解,英文的单词是以空格分隔的,所以单词就是二个空格之间的字母加空格。(实验证明,确实是这样的)不过,这与我们的关系不大(因为我们大多处理的是中文)。那么中文的“Word”是怎么回事呢?是词组?还是每个汉字呢?其实我也不知道,我是这样来做的,在VBA中输入如下的程序:Sub 中文

3、Word()Dim range1 As Range Set range1 = ActiveDocument.Words(1) range1.select MsgBox range1End Sub再新建一个Word,输入这样的的汉字“ a 彼岸赋好 彼岸变量”(不包括红色的双引号),按F8分别测试Words(1)、Words(2)、Words(3)、Words(4)、Words(5)、Words(6)等,发现什么没有。我发现了如下的规律:标点符号在中文中算是一个Word单位;字母或者单词后面的空格不算一个Word单位,再英文如果没有结标记则包括后面的空格(例如:a the as.,则第一个是a

4、,(注意后面有空格),当然最后的.不包括在前一个as内。所以,以上总共有4个Words,你可以用这个来测试。ActiveDocument.Words(1).Select,ActiveDocument.Words.count);除此以外,只有汉字与汉字之间的空格算一个Word单词;有的Word是一个汉字,有的是二个汉字,可能有的还是三个汉字,这是为什么呢?我们打开微软的输入法,再用“彼岸”及“变量”的拼音输入,可以看到这是一个词组(如下图) 所以我想,有的一个是汉字,有的二个是汉字,他“可能”是根据微软的输入法中的词组定义相一致的。当然,你也可以看看Words集合来看一下这个对象。当然,可能没我

5、说的简单、易懂。当然words对象的不确定性,决定了他使用的频率。如果你看懂我的上面所说,对于words对象基本就OK了。 注意range对象的赋值就是这样set a=b ,变量的赋值就是a=1,但对象就必须这样赋值!(包括任意的对象,Set是对对象赋值的标准语句) 将一个 Range 对象变量设置为等于另一个 Range 对象变量 下列指令(语句)将名为 Range2 的区域变量设为与 Range1 代表的位置相同。Set Range2 = Range1 译为:设置Range2对象与 Range1 代表的位置相同现在两个变量代表同一区域。修改 Range2 的起点、终点或其中的文本将影响 R

6、ange1,反之亦然。 请注意,以下指令等价于 Range2.Text = Range1.Text。该指令指定 Range2 的默认属性(Text 属性)为 Range1 的默认属性。但该指令并不修改其实际引用的对象。Range2 = Range1 Range2 和 Range1 区域具有相同的内容,但它们可能对应文档中的不同位置,甚至对应不同的文档。上面这句有点难懂,用程序来说明吧(以后大多是这样,因为我们是学习VBA,只有通过程序来说明内容)Sub 测试Range1等于Range2()Dim range1 As Range, range2 As Range Set range1 = Act

7、iveDocument.Range(0, 1) 文档的第一个区域(字) Set range2 = ActiveDocument.Range(1, 2) 文档的第二个区域(字) MsgBox range1 输出第一个字 MsgBox range2 输出第二个字 range2 = range1 把第一个(字)的区域的字赋值给第二个区域 MsgBox range2 输出第二个区域(字) 为什么我把字后面加括号,因为我们设置的是区域,就是范围小了点的区域, 就一个字的区域,所以,也是字,但区域更准确。End Sub当然,与第一例子类似,要新建一个文档,输入一定(只要二个)字来做测试,按F8一步一步来看

8、,也行。友情提醒:以后大多是这样:新建、输入、然后把代码复制到VBE中来测试。 使用 Duplicate(复制) 属性 下列指令创建一个Range对象的新副本 Range2,它与Range1有相同的起点、终点和文本。Set Range2 = Range1.Duplicate对 Range1 起点或终点的修改不影响 Range2,反之亦然。但是,由于这两个区域指向文档中的同一位置,对一个区域中文本的修改将影响另一个区域中的文本。 我不知道为什么要使用这个Duplicate属性,上面都说是了Set range2=range1不是好用的很吗?不明白啊,或许以为你会发现的。 修改文档的某一部分(以后为

9、细说对象时,说到这些,现在大致了解一些关键的东东)Visual Basic 包含一些对象,可用这些对象修改下列文档元素:字符、单词、句子、段落和节。下表包含与这些文档元素相对应的属性和这些属性返回的对象。表达式返回的对象Words(index)Range (注意Words返回的是Range对象)Characters(index)Range (注意Characters返回的是Range对象)Sentences(index)Range (注意Sentences返回的是Range对象)Paragraphs(index)Paragraph Sections(index)Section (这个是“节”,

10、就是插入、分隔符中的“节”)如果使用这些属性时不带索引序号,则返回一个具有相同名称的集合对象。例如,Paragraphs 属性返回 Paragraphs 集合对象。但是如果通过索引序号识别集合中的一项,则返回上表中第二列中的对象。例如,Words(1) 返回一个 Range 对象(注意不是Word对象噢)。有了一个 Range 对象之后,可以使用任何区域属性或方法修改该 Range 对象。例如,下列指令将所选内容的第一个单词复制到“剪贴板”。Sub CopyWord() Selection.Words(1).CopyEnd Sub仅供参考!注释 Paragraphs 和 Sections 集合

11、中的项是该集合的单个成员,而不是 Range 对象。但是(返回 Range 对象的)Range 属性对 Paragraph 和 Section 对象都可用。例如,下列指令将活动文档的第一段复制到“剪贴板”。Sub CopyParagraph() ActiveDocument.Paragraphs(1).Range.CopyEnd Sub上述表格中的所有文档元素属性对 Document、Selection 和 Range 对象都可用。下列示例阐明了如何使用 Document、Selection 和 Range 对象的这些属性。 下列示例设置活动文档中第一个单词的大小写。Sub ChangeCas

12、e() ActiveDocument.Words(1).Case = wdUpperCaseEnd Sub 下列示例将当前节的下边距设为 0.5 英寸(前台是通过页边距来做)。Sub ChangeSectionMargin() Selection.Sections(1).PageSetup.BottomMargin = InchesToPoints(0.5)End Sub 下列示例将活动文档的字符间距设为两倍(Content 属性返回一个 Range 对象)。Sub DoubleSpaceDocument() ActiveDocument.Content.ParagraphFormat.Spa

13、ce2 Space2是2倍的缩写End Sub 修改一组文档元素 若要修改由一组文档元素(字符、单词、句子、段落或节)组成的某区域的文字,需要创建一个 Range 对象。Range 方法根据开始和结束位置可创建 Range 对象。例如,下列指令创建一个 Range 对象,该对象引用活动文档的前十个字符。 Sub SetRangeForFirstTenCharacters() Dim rngTenCharacters As Range Set rngTenCharacters = ActiveDocument.Range(Start:=0, End:=10)End Sub 没记错的话,这个例子以

14、前用过,以后有这种情况,就是一个例子反复使用,但角度不同。 使用 Range 对象的 Start 和 End 属性可创建一个新的 Range 对象,该对象引用一组文档元素。例如,下列指令创建一个引用活动文档中前三个单词的 Range 对象 (myRange)。Sub SetRangeForFirstThreeWords() Dim docActive As Document Dim rngThreeWords As Range Set docActive = ActiveDocument 设置变量 Set rngThreeWords = docActive.Range(Start:=docAc

15、tive.Words(1).Start, _ End:=docActive.Words(3).End)End Sub 下列示例创建一个 Range 对象(aRange),该对象从第二段的开头开始,在第三段之后结束。 Sub SetParagraphRange() Dim docActive As Document Dim rngParagraphs As Range Set docActive = ActiveDocument Set rngParagraphs = docActive.Range(Start:=docActive.Paragraphs(2).Range.Start, _ En

16、d:=docActive.Paragraphs(3).Range.End)End Sub 引用活动文档元素 要引用活动的段落、表格、域或其他文档元素,可使用 Selection 属性返回一个 Selection 对象。通过 Selection 对象,可访问选定内容中的所有段落或第一段。下列示例将边框应用于选定内容的第一段。Sub BorderAroundFirstParagraph() Selection.Paragraphs(1).Borders.Enable = TrueEnd Sub下列示例将边框应用于选定内容中的每一个段落。Sub BorderAroundSelection() Sel

17、ection.Paragraphs.Borders.Enable = TrueEnd Sub下列示例将底纹应用于选定内容中第一张表格的首行。Sub ShadeTableRow() Selection.Tables(1).Rows(1).Shading.Texture = wdTexture10PercentEnd Sub如果选定的内容不包含表格,将导致出错。可使用 Count (计数)属性判定选定内容中是否包含表格。下列示例将底纹应用于选定内容中第一张表格的首行。Sub ShadeTableRow() If Selection.Tables.Count >= 1 Then Selecti

18、on.Tables(1).Rows(1).Shading.Texture = wdTexture25Percent Else MsgBox Selection doesnt include a table End IfEnd Sub下列示例将底纹应用于选定内容中每张表格的首行。For Each.Next 循环用于在选定内容的每张表格中循环。Sub ShadeAllFirstRowsInTables() Dim tblTable As Table If Selection.Tables.Count >= 1 Then 判断选中区域是否存在表格 For Each tblTable In Se

19、lection.Tables 这是在选中表中循环的标准写法 tblTable.Rows(1).Shading.Texture = wdTexture30Percent Next tblTable End IfEnd Sub使用Word对象(这一部分不需要了解太深,以后用到时,还会详细的解释这些。原因有二:第一,这个比较抽象,第二,使用的频率不高。PS: 我的身份证号码自动提取信息的原理就是这个知识,但遗憾的是大多人看不懂。)使用 Application 对象事件若要创建 Application 对象事件的事件处理器,需要完成下列三个步骤:在类模块中声明对应于事件的对象变量。 编写特定事件过程。

20、从其他模块中初始化声明的对象。 一、声明对象变量在为 Application 对象事件编写过程之前,必须创建新的类模块并声明一个包含事件的 Application 类型对象。例如,假定已创建新的类模块并命名为 EventClassModule。该类模块包含下列代码:Public WithEvents App As Word.Application编写事件过程定义了包含事件的新对象后,它将出现在类模块的“对象”下拉列表框中,然后可为新对象编写事件过程。(在“对象”框中选定新对象后,用于该对象的有效事件将出现在“过程”下拉列表框中)从“过程”下拉列表框中选择一个事件,在类模块中会增加一空过程。Pr

21、ivate Sub App_DocumentChange() End Sub初始化已声明的对象在运行过程之前,必须将类模块中已声明的对象(本例中为 App)连接到 Application 对象。您可在任何模块中使用下列代码:Dim X As New EventClassModuleSub Register_Event_Handler() Set X.App = Word.ApplicationEnd Sub运行 Register_Event_Handler 过程。运行该过程后,类模块中的 App 对象指向 Microsoft Word Application 对象,当事件发生时,将运行类模块中

22、的事件过程。 使用 Document 对象的事件Document 对象支持多种事件,以响应文档状态。若要在名为“ThisDocument”的类模块中编写响应这些事件的过程。可用下列步骤创建事件过程。在“工程资源管理器”窗口中的 Normal 工程或文档工程下,双击“ThisDocument”。(“ThisDocument”位于“文件夹”视图中的“Microsoft Word 对象”文件夹中)。 从“对象”下拉列表框中选择“Document”。 从“过程”下拉列表框中选择一个事件。 类模块中即增加了一个空子程序。添加要在事件发生时运行的 Visual Basic 指令。 下例显示了 Normal

23、 工程中的一个 New 事件过程,它在新建一个基于 Normal 模板的文档时运行。Private Sub Document_New() MsgBox New document was createdEnd Sub下例显示了文档工程中的 Close 事件过程,该过程只在该文档关闭时运行。Private Sub Document_Close() MsgBox Closing the documentEnd Sub与自动宏不同,Normal 模板中的事件过程没有全局区。例如,Normal 模板中的事件过程只有在附加模板为 Normal 模板时才发生。如果文档及其附加模板中存在自动宏,则仅运行保存在

24、文档中的自动宏。如果文档及其附加模板中都存在文档事件过程,则两个事件过程都会运行。使用 ActiveX 控件事件(这部分主要是VB窗体的使用,对VB熟练的就OK,否则有点吃力,我也吃力。但我想没关系,我虽做不出如花的界面,但功能上能完成,也就行了。)Microsoft Word 文档可包含 ActiveX 控件。可用“控件工具箱”插入诸如命令按钮、复选框和列表框等 ActiveX 控件。可使用下列步骤添加具有 LostFocus 事件的 ActiveX 复选框控件:在 Word 中用鼠标右键单击工具栏,然后单击“控件工具箱”。 单击“复选框”控件。 活动文档中即插入一个复选框控件。用鼠标右键单

25、击复选框,然后单击“查看代码”。 Word 会切换至“Visual Basic 编辑器”并显示 ThisDocument 类模块,并在“对象”下拉列表框中选定该复选框。在“过程”下拉列表框中选定 LostFocus 事件。 在类模块中会添加一个空过程。添加要在事件发生时运行的 Visual Basic 指令。 下列示例显示在焦点离开 CheckBox1 时运行的 LostFocus 事件过程。该宏用 Value 属性显示 CheckBox1 的状态(True 为选定,False 为清除)。Private Sub CheckBox1_LostFocus() MsgBox CheckBox1.Va

26、lueEnd Sub若要查看事件过程的运行情况,可切换回包含该复选框的 Word 文档。单击“控件工具箱”上的“退出设计模式”按钮。选定或清除复选框,然后单击文档中的其他元素。此时复选框失去焦点,LostFocus 过程开始运行;Word 会显示一个消息框,内容为 True 或 False。Word 在 Word 文档中为 ActiveX 控件应用了 LostFocus 和 GotFocus 事件。“过程”下拉列表框中列出的其他事件在“Microsoft 窗体帮助”中有文档说明。 使用控件和对话框(这一部分介绍的大多是关于窗体有关的东东,他与VB的类似,如果是VB高手,不用看的。像我等低手,有

27、些也看不明白,不过,我觉得无大碍。我们更注重的内涵,而不是华丽的外表)在文档中使用 ActiveX 控件如果需要为用户提供复杂的交互方式,使用户可与宏进行直接交互而不受对话框的干扰,类似于将 ActiveX 控件添至自定义对话框,您可将控件直接添至文档。使用下列步骤可将 ActiveX 控件添至文档。有关在 Word 中使用 ActiveX 控件的特定信息,请参阅在文档中使用 ActiveX 控件。将控件添至文档 若要向文档的图形层添加控件,请单击“控件工具箱”上的控件。若要向文档的文本层添加控件,请按住 Shift 并单击“控件工具箱”上的控件。设置控件属性 在设计模式下用鼠标右键单击控件,

28、并单击“属性”以显示“属性”窗口。初始化控件 可在过程中初始化控件。编写事件过程 所有控件都有一系列预定义的事件。例如,命令按钮有 Click 事件,当用户单击该命令按钮时,该事件发生。您可编写事件发生时运行的事件过程。运行代码时使用控件的值 可在运行时设置某些属性创建自定义对话框通过下列步骤创建自定义对话框:创建用户窗体 在“Visual Basic 编辑器”的“插入”菜单上,单击“用户窗体”。将控件添至用户窗体 在“工具箱”中找到要添加的控件,并将控件拖至窗体上。设置控件属性 在设计模式中用鼠标右键单击控件,并单击“属性”以显示“属性”窗口。初始化控件 您可在显示窗体之前的过程中初始化控件

29、,或为窗体的 Initialize 事件中添加代码。编写事件过程 所有控件都有一系列预定义的事件。例如,命令按钮有 Click 事件,在用户单击命令按钮时,该事件发生。您可编写事件发生时运行的事件过程。显示对话框 使用 Show 方法显示用户窗体。运行代码时使用控件的值 有些属性可在运行时设置。用户在对话框中为控件设置的值将在对话框关闭时丢失。显示内置 Word 对话框(这个要掌握,这个是内置的对话框,与Word关系紧密。)本主题包含下列信息和示例:显示内置对话框 返回和更改对话框设置 检查对话框的关闭方式 显示内置对话框可以显示内置对话框以获取用户输入的信息或使用 Visual Basic

30、for Applications 控制 Microsoft Word。Dialog 对象的 Show 方法可显示并执行 Word 内置对话框中的任何操作。若要访问特定的内置 Word 对话框,请指定具有 Dialogs 属性的 WdWordDialog 常量。例如,下列宏指令显示“打开”对话框 (wdDialogFileOpen)。Sub ShowOpenDialog() Dialogs(wdDialogFileOpen).ShowEnd Sub选定文件并单击“确定”按钮后,会将文件打开(执行操作)。下列示例显示“打印”对话框 (wdDialogFilePrint)。Sub ShowPrint

31、Dialog() Dialogs(wdDialogFilePrint).ShowEnd Sub设置 DefaultTab 属性可以访问 Word 对话框中的特定选项卡。下列示例显示(“格式”菜单中)“边框和底纹”对话框中的“页面边框”选项卡。Sub ShowBorderDialog() With Dialogs(wdDialogFormatBordersAndShading) .DefaultTab = wdDialogFormatBordersAndShadingTabPageBorder 这个偷长,我都晕了。 .Show End WithEnd SubDisplay 方法显示对话框但不执行对话框的操作。如果使用内置对话框提示用户并返回设置,则该方法很有用。例如,下列宏指令显示(“工具”菜单中)“选项”对话框中的“用户信息”选项卡,然后返回并显示用户名称。Sub DisplayUserInfoDia

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1