VBA实例(守柔(SHOUROU)WORD 编程代码集)

所需积分/C币:9 2018-07-19 15:22:22 824KB PDF
收藏 收藏
举报

守柔(SHOUROU)WORD 编程代码集 书中可能涉及的对象,主要有:节(Sections)的循环,段落中(Paragraphs)的循环, 句子(Sentences)的循环,词组中(Words)的循环,字(Characters)的循环,表格(Tables) 的循环,单元格(Tables(Item).Range.Cells)的循环,自选图形(Shapes)的循环,域(Fields) 的循环,书签(Bookmarks)中的循环等等,函数的应用、选择性分支语句、判断语句、 错误处理、类模块的使用、用户窗体的使用、数组的应用、Automation等等,不一一 列举,读者可根据自身情况,逐一进行渐进式
ExceHeMe 守柔( SHOUR0UW0RD编程代码集 六十三)使用 AUTOMATION自动化 EXCEL-WORD之三………107 六十四)程序调用示例,,, 113 六十五)多程序协同交互作业示例…114 六十六)WORD与 SPREADSHEET控件的协同作用 116 六十七)数组运用实例(三则混合运算竖式列表代码)…118 六十八)关于注册表的操作……121 第3页共122页 ExceHeME 守柔( SHOUR0UW0RD编程代码集 一)序 本书是作者在 ExceLhoMe(hTtp:club.excelhome.net/index.asp)word版中的部分 原自创作品,其中的部分代码是作者耗费大量精力所创,在已知的国内外各WORD论坛 中所未见。读者在阅读本书相应代码时,可从相关链接中进行对原帖的査阅,以使能够 更好地理解和掌握代码的含义和适用范围。 作者整理此书的目的之一,就是希望让有一定WORD基础的朋友能够通过此书的 讲解,以提高对WORD以及MS( Microsoft)的认识和操作技能,并希望本书能对想 学习VBA和正在学习VBA的读者有所裨益。 在阅读本书之前,作者先阐述一下 VBA(Visual Basic for Applications)的作用原理: VBA是捆绑在 Appliation对象(此处则指 Word Application,简称Word)的一个后台程 序;BE( Visual basicε ditor)是指编辑VBA的一个程序/编辑器(在WORD中按下 ALT+F11即可进入),从对象角度看,有 Application. VBE(即VBE是附属于 Application 对象的一个对象),从工程角度看,有 ActiveDocument. VBProject(当前文档的VBA工 程)。我们知道, Microsoft系统产品是以 Windows(广义,非单指WIN系统)著称, 是泛指以窗口型的可视化程序,用户与电脑通过程序进行数据交换和人机对话,用户所 有的前台(直接用鼠标、键盘等)和后台(编程)操作,都是面向对象的捰作。因此正 确理解对象的概念、集合、属性、方法是非常必要的。从大范围讲, Application(应用 程序)是一个大对象(最顶层),任何允许用户操作的地方都存在指定的对象,比如常见 的标题栏名称( Application. Caption),最大化最小化按钮(App| ication window state), 所有的菜单、下具栏、命令等等都是一个对象,用户最常用的是 Selection对象,即选 中的内容,Word中是作为 Selection对象来处理的,如选中的文字,选中的表格,选中 的图形等等,大到 Application对象(最顶层),小到一个字符( Character)甚至一个光 标,对于VBA而言,都是一个对象。根据对象分工不同,对象还有父对象、子对象等 等。我们通常编程,可以以不同的方式访问对象、修改对象的属性或者指定对象进行特 定的动作等。在WORD中,最重要的对象是 Selection对象和 Range对象,相当于 Excel 中的 ActiveCel和 Range对象 下面我们来讨论一下为什么要编程:Word程序为用户设计了许许多多具有普遍规 律的对象的操作方法和属性修改,对于常规的规范化操作,只要用户充分了解了WORD 中的操作规律并进行了规范操作,使用wORD的前台功能,凵经能基木解决常规问题; 但对一些不具有普谝规律并且用户自定义的非规范内容的长时间多次数反复操作,则不 可能提供一个完全的、千遍一律的解决方法,那么WORD( Microsoft office)是如何来 解决这个问题的呢? Microsoft word( Office)在这里为我们提供了强有力的编程于段, 编程语言正是解决虽然不具有普遍操作意义的命令,但能使用少数用户的部分WORD 功能强化的代码;对于简单的重复组合命令,我们可以通过录制宏的方法进行录制,也 可以在录制结束后进行适当的简化,但基本以 Selection对象为主,而且录制的宏中每 个对象的所有属性几乎全部被记录,整个代码非常大,效率就低;更为主要的是录制 的宏中,对于判断性结构诂句,循环语句,函数等等的,是没有提供记录的,所以,要 使我们的宏适用于用户、适用于一个特定的操作过程,就需要使用编程来完成。 认识宏安全性:宏是WORD( Microsoft office)提供给用广或者编程人员的一个特 定的后台操作环境中的一组代码,是用来完成指定操作的一个过程(大到工程),从广 义角度讲,任何不是用户愿意看到的结果的代码,都可以称之为病毒;从狭义角度讲, 病毒是专门用来危害用户的操作系统、危害用户的应用程序并使用户在无知情况下进行 第4页共122页 ExceHeMe 守柔( SHOUR0UW0RD编程代码集 非自慝性操作的恶意代码并可能具有自身的复制和传播与变性。对Word而言,我们可 以设定宏安全性,这样可以禁止宏的运行或者选择性地运行一些宏,从上述内容中我们 乜可以看到,如果不用宏,我们很多的自动化、复杂的工作等等都会因之不能使用。因 此,宏是一柄双刃剑。但随着Ms的防范机制的増加、用户水平的增高、用户杀毒软件 的及时有效使用,都会避免恶意病毒(代码)的入侵。退一步而言,以VBA的形式编 写的宏病毒,影响是有限的。因此,读者首先不要产生谈宏( Macro)色变的想法,要 宏为我所用,同时也提醒编程人员,编程要有所为,有所不为。 了解宏的作用原理:WORD应用程序的所有内置命令、模块、过程,不会在VBE 中出现,而所有的宏(录制宏、复制宏、代码编程等)均寄生于文档的Ⅴ PRoject中, 当用户结合事件触发后或者运行后,小能作用于特定对象,完成特定操作或者返闻特定 数据。 本书中可能涉及的对象,主要有:节( Sections)的循环,段落中( Paragraphs)的循环, 句孑( Sentences)的循环,词组中( Words)的循环,字( Characters)的循环,表格( Tables) 的循环,单元格( Tables(Item) Range.cels)的循环,自选图形( Shapes)的循环,域( Fields) 的循环,书笠( Bookmarks)中的循环等等,函数的应用、选择性分支语句、判断语句、 错误处理、类模块的使用、用户窗体的使用、数组的应用、 Automation等等,不 列举,读者可根据自身情况,逐一进行渐进式学习。 对于中所涉及的一些代码可能读者还会有更好的、更简单的方法,也或者有些代 码还会存在这样那样的问题,这都有待于读者的反馈与交流。在编程上,我们常说的 句话是:没有最好,只有更好;另外,我也可能会更新部分代码,请注意相关链接。 另外由于Oice版本号的不同,其中的属性对象方法等也不尽相同,但可向下兼 如读者有任何疑问可发送邮件到shourou8@hotmail.com,我将尽快给予答复, 有MSN的朋友也可以直接通过MSN进行交流 说明:本文档所涉及的所有代码和中文复制均在VBE中文代码复制器中完成(简化 了代码头),仝部的代码头说明如 作者: Created By守柔( ShouRou) 时间:2004-12-2109:21:36 仅测试于 System: Windows nt word,是指 Windows200,Word:10.0为 OFFICE/ Word xP(2002), Language:2052为 OFFICE安装语言是中文版(如英文版 则为:1033: CopyIn[ ThisDocument- ThisDocument]中的前一个 ThisDocument是指当 前模玦为所在的类模块为" ThisDocument",后一个 ThisDocument是指该类模块的工程 名称,使读者可以方便知道模块位置。 *十+++++++++++++++++++++++++++ i* Created By if*(Shou Rou)@ExcelHome 2005-1-24 5: 47: 47 仅测试于 System: Windows nt word:10.0 Language:2052 AThe Code CopyIn [This Document-ThisDocument] 在此借本|的发表,向一直关心和攴持 EXCELHOME论坛、支持守柔的所有网友致 谢!同时也向为ⅤBA开发作出贡献的先辈们表小由衷的敬意 本书的出版与编辑得到 officeFans如意版主的大力支持,一并感谢 第5页共122页 ExceHeMe 守柔( SHOUR0UW0RD编程代码集 守柔( shourou) 整理亢成于2004-12-25日 第6页共122页 ExceHeME 守柔( SHOUR0UW0RD编程代码集 二)空白段落的删除 *++++++++++++++++++++++++++++++++++++++ AThe Code CopyIn [This Document-This Document]A 功能简介:可以对指定长度的段落进行删除,当LEN=1吋可对空白段落进行删除。 Sub DelBlanko Dim i As Paragraph, n As Long Application. ScreenUpdating= False'关闭屏幕刷新 For Each i In Active Document. Paragraphs'在活动文档的段落集合中循环 If Len( Range)=1Then"判断段落长段,此处可根据文档实际情况 i Range. Delete"进行必要的修改可将任意长度段洛删除 n=n+1"计数 End if Next MsgBOX"共删除空白段落"&n&"个! App| ication. ScreenUpdating=True"-复屏幕刷新 End sub http:/club.excelhome.net/dispbbs.asp?boardid=23&id=24414 三)以指定字符重新划分段落并插入时间序列数 *++++++++++++++++++++十+++++++++++++++++ AThe Code CopyIn [This- ThisDocument]A Sub CreateParagrapho Dim I As Long, n as integer On error resume next:忽略错误 App| ication. ScreenUpdating= False'关闭屏幕更新 With activedocument 将文档中所有段落标记删除 Content Find Execute FindText: =p Replacewith: Replace: =wdReplaceAll ForI=0 To. Content. End Step10"以10个字符位置(包括非打印字符)为 步长循环 每段十个字符部分分成段落(注意插入的段落标记也是一个字符) Range(I, I +10+ N.InsertAfter chr(13) N=N+1“计算插处的段落标记个数 Next End wit App| ication. ScreenUpdating=True"恢复屏幕更新 InsertTimer End sub Sub InsertTimero Dim I As Paragraph, N As Integer, TimeStr As String On error resume next'忽略错误 Application. ScreenUpdating= False'关闭屏幕更新 第7页共122页 ExceHeMe 守柔( SHOUR0UW0RD编程代码集 For Each I In ActiveDocument. Paragraphs‘在文档新的段落中循环 IfN<10Then<10, Timestr的分钟值为5(保持两位数05 Timestr="[00:0"&N&".00y" Eself n=60Then"N=60时时间数进一并保持该数据(不再向上) Timestr="[01:00.00]" N=0 Else Timestr的分钟数照计(两位数) Timestr=[00 :&n&.00 End if I Range. InsertBefore TimeStr"每个段前插入时间数值 N=N+5以5为步长累加 Next Application. ScreenUpdating=True"恢复屏幕更新 End sub -http:clubexcelhome.net/dispbbs.aspbOardid=23&replyiD=280 102&id=603338skn=0 四)段落样式与格式的应用 功能简介:由于手动录入的段落编号不能被WORD所识别,为以后的样式与格式的设置 以及目录索引等带来一系列的问题本代码即是将其转换为指定样式的过程 +++++++++++++++++++++++++++十++++++++++ AThe Code CopyIn [ThisDocument-ThisDocument]A == Sub sampled Dim i As paragraph Mystr As String Application. ScreenUpdating False MySt="一二三四五六七八九十"假定为手动加注每个段落开头为中文大写 数字 For Each i In Me. Paragraphs If i Range Like(#)*= True Then Style= wdstyleHeadingt9‘标题9是以(1)等开头的数字 ElseIf i Range like ####*= true then Ste= wdStyleHeading8'标题8是以1.1.1.1的形式开头的段落 ElseIf i Range like #. # #*= True Then stye= wdStyleHeading7‘标题7是以1.1.1的形式开头的段落 ElseIf i Range Like #.#*= True Then stye= wdstyleHeading6标题6是以1.1形式开头的段落 ElseIf InStr(MyStr, Me. Range(i Range Start, i Range Start 1).Text)>0 Then i Style= wdstyleHeading5"标题5是以一等形式开头的段落 Else i Style= wdstyleNorma'其它为正文样式 End if Next Application. ScreenUpdating = True 第8页共122页 ExceHeMe 守柔( SHOUR0UW0RD编程代码集 End sub http://club.excelhome.net/dispbbs.aspBoardid=23&id=69053&Replyid=339856&sk 五)根据预定义段落进行段落样式的设置和插入目录 *+++++++++++++++++++++十++++++++++++++++ AThe Code CopyIn [ThisDocument-ThisDocument] 功能简介:对于网上复制的一些非正规编排的文档,没有大纲级别,也没有很好地 样式格式以区分,利用此功能,可以根据先前的手动目录,更改为自动生成的目录, 便于文档管理。 Sub Contents Dim I As Paragraph, N As Byte, A As Byte, B AS Byte, X As Long, DelRange As Range Application. ScreenUpdating False A=2 B=13 With ActiveDocument For Each I In. Paragraphs'在段落中循环 Ⅹ=Ⅹ+1计数 ForN=AToB进入文档第二段落到第十二段落问的循环 IfⅩ> B Then If I Range = Paragraphs(N). Range Then IStyle = Styles( wdstyleHeading1) y A=A+1累计 End if End if Next Next Set DerAnge Range( Paragraphs(2)Range. Start , Paragraphs( 13).Range End) DelRange. Delete"删除原文档的第二~第十三个段落 Paragraphs(2)Range. Select 插入/引用/索引与目录 TablesofContents Add Range: =Selection Range, RightAlign PageNumbers: True, UseHeadingStyles: =True, UpperHeadingLevel: =1 LowerHeadingLevel: =3 IncludePageNumbers: =True, Addedstyles UseHyperlinks:=True HidePageNumbersInWeb: -True 第9页共122页 ExceHeME 守柔( SHOUR0UW0RD编程代码集 TablesofContents(1). TabLeader wdTabLeader Dots TablesofContents Format wdIndexindent End with Application ScreenUpdating= True End sub --http:clubexcelhome.net/dispbbs.asp?Boardid=23&id=53560 六)表格集合中的循环与对单元格边框的设置 +++++++++++十++++++++++++++++++++++++++ AThe Code CopyIn [This Document-ThisDocument] Sub example Dim i As Table, N As Integer On error resume next'忽略错误 Application. ScreenUpdating= False'关闭屏幕更新 For each i In active document tables"在表袼中循环 With i Stye="列表型4"将所有表格设置为"列表型4"的样式 With borders边框 Insidelinestyle= wdLine stylesingle"设置内部边框线条 End with With rows(1). Borders( wd Borderbottom)"第一行的底边框 Linestyle= wdLineStyleDouble'双线型 LineWidth wdLineWidth050pt Color wd ColorAutomatic End with If Rows. Count>1Then'如果表格行数大于1 If Len(Ce(2,1). Range)<=2Then"如果第二行第一列不为空 With, rows(2). Shading"设置底纹 Texture= wdTexturenone无底底纹 ForegroundPattern Color wdcolorAutomatic BackgroundPattern Color wd Color gray 125 End with End if End If ForN=2To. olumns, Count从第二列到最后一列 Columns(N). Select单元格对齐方式为中部居中 Selection. Paragraph Format. Alignment= wdAlignParagraphCenter Selection Cells. VerticalAlignment wdcellAlignVerticalCenter Next N End with Next i Application. ScreenUpdating = True 第10页八122页

...展开详情
试读 122P VBA实例(守柔(SHOUROU)WORD 编程代码集)
立即下载 低至0.43元/次 身份认证VIP会员低至7折
抢沙发
一个资源只可评论一次,评论内容不能少于5个字
关注 私信 TA的资源
上传资源赚积分,得勋章
最新推荐
VBA实例(守柔(SHOUROU)WORD 编程代码集) 9积分/C币 立即下载
1/122
VBA实例(守柔(SHOUROU)WORD 编程代码集)第1页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第2页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第3页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第4页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第5页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第6页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第7页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第8页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第9页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第10页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第11页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第12页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第13页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第14页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第15页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第16页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第17页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第18页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第19页
VBA实例(守柔(SHOUROU)WORD 编程代码集)第20页

试读结束, 可继续阅读

9积分/C币 立即下载 >