word宏、宏编程以及VBA

整理自网络

 

word宏是什么呢?

宏是一个批量处理程序命令,正确地运用它可以提高工作效率。微软的office软件允许用户自己编写,叫VBA的脚本来增加其灵活性,进一步扩充它的能力。

如完成一个一打开word文件同时要打开某个文件的功能,必须要自己编写一段称之为宏的脚本。

具体做法是在菜单栏点击开发工具-宏,"宏"弹出的对话框输入宏名,然后按"创建"按钮会打开visual basic编辑器,你就可以编程了,这个就是宏。

学会它会有很多乐趣的。玩过街机模拟器的人肯定有体会,在格斗游戏中,用模拟器来录制宏,以实现一键放绝招。

 

典型应用

1.加速日常编辑和格式设置

2.使对话框中的选项更易于访问

3.自动执行一系列复杂的任务

 

Word宏功能介绍和使用

简单点说就是批处理,但是要比批处理功能更强大.使你一个简单的操作,比如一个左键点击,就可以完成多项任务,很方便的. 比如我们从网上复制的网页内容粘贴到Word以后可能会不少空行,有的行距又很大,手工去除空行、改行距、进行页面设置等等较麻烦,如果你录制一个宏以后,你只要按一下你设定的快捷键,一切工作就自动完成了。

另外,我们经常使用的一些功能也在不知不觉地使用宏,比如Word的稿纸功能实际上是已经设置好的"页眉和页脚"的一个宏。

宏是一系列 Word 命令和指令,这些命令和指令组合在一起,形成了一个单独的命令,以实现任务执行的自动化。

所以, 如果在 Microsoft Word 中反复执行某项任务,可以使用宏自动执行该任务。

 

比如说你的电脑每天要监控并记录很多组的数据,而且这些数据是不断变化更新的(发/变电站记录表记等),这样你就需要做个宏来将服务器里这些数据定时转到一个或多个WORD文档里来,便于计算存档和打印.你的领导办公室在远一些的地方也可以通过网络来调用这个宏来将数据传到他的办公桌的电脑上.当你启动做好了的这个含有宏的文件的时候会弹出一个窗口问你是否起用宏.

 

为了让你具体地了解运用,下面举个例子:录制一个进行页面设置的宏。

 

你任意打开一个Word文档后用鼠标依次点击开发工具-宏-录制宏,再点击"键盘",在"请按新快捷键"内填入你想设定的快捷键(如Ctrl+1),再单击右边的"指定"按钮及"关闭"按钮,这时开始录制宏,屏幕上有一个工具条,有暂停(恢复)、结束按钮。你可以对打开的Word文档,像以前一样地进行页面设置,设置完以后你点一下工具条上的"结束"按钮,宏就录制好了。下次你要对一篇Word文档像录制宏时一样重新进行页面设置时,只要打开这篇Word,再按一下"Ctrl+1"(即您设定的快捷键),一切OK。

 

宏的一些典型应用

加速日常编辑和格式设置 .

组合多个命令,例如插入具有指定尺寸和边框、指定行数和列数的表格 .

使对话框中的选项更易于访问 .

自动执行一系列复杂的任务 .

Word 提供两种方法来创建宏:宏录制器和 Visual Basic 编辑器 。

 

微软Word和宏病毒

Visual Basic for Applications (VBA),是 Microsoft Office 里的一种编程语言. 但由上面的定义,它完全不是一种宏语言。然而,它的功能已经从中发展并最终替代了用户应用程序的宏思想,所以他被广泛地错误地称为是一种宏语言。

VBA 可以访问许多操作系统函数并支持文档打开时自动执行宏。这使得用这种语言写计算机病毒成为可能。1990年代中后期,宏病毒成为了最流行的计算机病毒类型之一。其它的包括宏语言的项目,故意从其宏语言中排除了一些功能(如:自动执行)以避免破坏程序。然而,这一特性在很多事务中受到欢迎。

 

VBA是什么?

Visual Basic for Applications(VBA)是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。也可说是一种应用程式视觉化的Basic 脚本。该语言于1993年由微软公司开发的的应用程序共享一种通用的自动化语言--------Visual Basic For Application(VBA),实际上VBA是寄生于VB应用程序的版本。微软在1994年发行的Excel5.0版本中,即具备了VBA的宏功能。

用途

由于微软Office软件的普及,人们常见的办公软件Office软件中的WordExcelAccessPowerpoint都可以利用VBA使这些软件的应用更高效率,例如:通过一段VBA代码,可以实现画面的切换;可以VBA6实现复杂逻辑的统计(比如从多个表中,自动生成按合同号来跟踪生产量、入库量、销售量、库存量的统计清单)等。

掌握了VBA,可以发挥以下作用:

1.规范用户的操作,控制用户的操作行为;

2.操作界面人性化,方便用户的操作;

3.多个步骤的手工操作通过执行VBA代码可以迅速的实现;

4.实现一些VB无法实现的功能。

5.VBA制做EXCEL登录系统。

6.利用VBA可以Excel内轻松开发出功能强大的自动化程序。

 

与VB的区别

VB是设计用于创建标准的应用程序,VBA是使已有的应用程序(EXCEL)自动化

VB具有自己的开发环境,VBA必须寄生于已有的应用程序.

要运行VB开发的应用程序,用户不必安装VB,因为VB开发出的应用程序是可执行文件(*.EXE),VBA开发的程序必须依赖于它的父应用程序,例如EXCEL.

VBAVB的一个子集。

尽管存在这些不同,VBAVB在结构上仍然十分相似.事实上,如果你已经了解了VB,会发现学习VBA非常快.相应的,学完VBA会给学习VB打下坚实的基础.而且,当学会在EXCEL中用VBA创建解决方案后,即已具备在WORD ACCESS OUTLOOK FOXPRO POWERPOINT 中用VBA创建解决方案的大部分知识.

VBA一个关键特征是你所学的知识在微软的一些产品中可以相互转化.

VBA可以称作EXCEL"遥控器".

VBA究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案.

此外,如果你愿意,还可以将EXCEL用做开发平台实现应用程序.

Office取得巨大成功的一个重要原因就是VBA,使用VBA可以完成很多事情,基于ExcelWordVBA小程序不计其数。

VBA程序员很多是业余程序员,正因为业余,解决的却是工作中需要解决的问题;所以,VBA程序大多都是只是在部门内部或个人使用的小工具。

集成了VBA的其他应用程序也很多,但真正能为程序增色的不多。

大多数人看到了VBA可以自动化一个程序,可以扩展已有程序,但没有看到在Office中,VBA代码可以是录制的,而不是写出来的,带来的好处是,学习曲线变得非常缓。如果没有宏录制功能,要熟悉某个Office组件的对象模型,绝非一日之功。

ArcGIS为例,ArcGIS扩展必须使用ArcObject,不管是使用VBA也罢,VB也罢,还是C++也罢。但同时,ArcObject的学习不是一天两天可以搞定,对于业余程序员,要使用VBA来扩展ArcGIS,几乎没有可能;专业程序员又不屑使用VBA;而对于公司,如果要基于ArcObject来扩展ArcGIS,选择VBA意味着源码的保护很困难。所以,ArcGISVBA就如同鸡肋。

不过,学习AO的时候,使用VBA比使用其他语言要容易一些,写几行代码,然后直接运行测试结果,这种交互式的学习应该是最好的学习方法。

ArcGIS以及AOOffice相比,还有一个很大的差别,就是ArcGIS缺乏中等粒度的对象,例如WordExcelRange对象。对于Office开发,可以在对底层小粒度对象一无所知的状况下做很多事情,这就是抽象的力量。常人可以处理的复杂度是有限的,面对数十个对象和几百个对象,后者需要付出的努力不是10倍,而是数十倍或更多,因为在学习过程中,必须可以把这些对象在大脑中很好的组织,以控制其复杂度。

Visual Basic for Applications(简称VBA)是新一代标准宏语言,是基于Visual Basic for Windows 发展而来的。它与传统的宏语言不同,传统的宏语言不具有高级语言的特征,没有面向对象的程序设计概念和方法。而VBA 提供了面向对象的程序设计方法,提供了相当完整的程序设计语言。VBA 易于学习掌握,可以使用宏记录器记录用户的各种操作并将其转换为VBA 程序代码。这样用户可以容易地将日常工作转换为VBA 程序代码,使工作自动化。因此,对于在工作中需要经常使用Office 套装软件的用户,学用VBA 有助于使工作自动化,提高工作效率。另外,由于VBA 可以直接应用Office 套装软件的各项强大功能,所以对于程序设计人员的程序设计和开发更加方便快捷。

 

上述内容来自于百科

 

菜单栏中没有开发工具怎么办?

依次点击:文件——选项——自定义功能区——主选项卡——开发工具,即可。

如下图所示,菜单栏中出现了“开发工具”。

 

 

实例

1:用宏编写“hello world !”程序

开发工具——宏,输入名称“HelloWorld”,点击创建,在代码编写去输入如下代码:

Sub HelloWorld()

MsgBox ("hello world !")

End Sub
运行结果,如下图:

2:简单的用户交互

创建如下宏程序:
 

Sub Hello()

Dim X

X = InputBox("您的姓名是:")

MsgBox (" 欢迎" & X & "来到宏编程世界!")

End Sub
 

运行效果如下图:

可以定制title和占位字符串:

Sub Hello()

Dim X

Dim Y

X = InputBox("您的姓名是:", " 姓名输入框(这是title)", " 您的姓名请输入到这儿.(这是占位字符串)")

Y = MsgBox(" 欢迎您" & X & "朋友!", 0, "这里是欢迎对话框.(这是title)")

End Sub

还可以使用选择结构,根据输入的名字是否为空,执行不同的逻辑:

Sub Hello()

Dim X

Dim Y

X = InputBox("您的姓名是:", " 姓名输入框", " 您的姓名请输入到这儿。")

If X <> "" Then                             '如果X的值不为“空”,那么

Y = MsgBox(" 欢迎您" & X & "朋友!", 0, " 这里是欢迎对话框.")

Else                                         '否则(即,X的值为“空”)

End If                                       '结束

End Sub

运行效果,感兴趣的可以尝试一下。

3:在宏编程中使用循环、选择结构,以及生成随机数,数据类型转换

Sub Hello()

Dim a, b, c, d                              '申明了四个变量,变量间用英文逗号分开,与前面实例二申明变量的写法不同,结果相同。

a = 0                                       '这个变量用于计算您猜了多少次。

Randomize                                   '准备生成一个随机的数字,先初始化随机数生成器。

b = Int(100 * Rnd)                          '生成一个百以内的随机数,“Rnd”就是“随机数生成函数”。

Do                                          '开始循环

a = a + 1                                   '您猜的次数增添一次。当再次循环到这儿时,次数会继续往上加。

c = InputBox("请输入您所猜的数")            '将取得的值赋予变量“c”,“c”是字符串!

d = CInt(c)                                 '将变量“c”转化为整数,再将值赋给“d”。

If b < d Then                               '进行比较,如果猜大了。

MsgBox ("您猜的数大了")                     '显示比较的结果。

ElseIf b > d Then                           '进行比较,如果猜小了。

MsgBox ("您猜的数小了")                     '显示比较的结果。

Else: b = d                                 '进行比较,如果猜对了。

MsgBox ("哈哈,您猜对了!")                   '显示比较的结果。

Exit Do                                     '既然已经猜对了,就跳出循环。

End If                                      '结束比较。

Loop                                        '回到前面的Do,继续循环。

MsgBox ("您猜了" & a & "次!")               '弹出消息框,并使用了字符串连接。

End Sub                                     '结束程序。
 

上述例子来自于网友的“从零开始,步入Word宏编程的世界”,主要用于宏编程的教学,感兴趣的可以自行百度,还有更多的例子。

下面的两个例子,也来自于网络,但是更具有现实意义,是我用来解决实际工作中遇到的问题的。

 

4:如何利用宏选中word文档里的所有表格?

Sub SelectAllTables()
     Dim mytable As Table
      Application.ScreenUpdating = False
      For Each mytable In ActiveDocument.Tables
         mytable.Range.Editors.Add wdEditorEveryone
     Next     
    ActiveDocument.SelectAllEditableRanges (wdEditorEveryone)
    ActiveDocument.DeleteAllEditableRanges (wdEditorEveryone)
     Application.ScreenUpdating = True
End Sub

为什么要选中所有表格呢?

当你处理一个有许多个表格的Word文件时,比如由数据库导出数据字典时,数据库中可能有50多个表,导出到word就会相应地

有50多个表格,这些表格的原始格式,可能并不满足我们的需要,比如,表格只显示外边框,内部边框的线条都不显示,那么我

们要一个一个地修改表格属性么?还是利用Ctrl选中所有表格后再设置表格属性?或者还有别的方法?

利用宏,我们只需要几行代码,就可以选中所有表格,不是很高效、很快捷么?

 

 

5:如何利用宏同时为所有表格设置样式?

Sub AutoAdapt()

Application.Browser.Target = wdBrowseTable

For i = 1 To ActiveDocument.Tables.Count

   With ActiveDocument.Tables(i)

   .AutoFitBehavior (wdAutoFitWindow)  '根据窗口调整内容

   .Range.ParagraphFormat.Alignment = wdAlignParagraphCenter  '水平居中

   .Range.ParagraphFormat.Alignment = wdCellAlignVerticalCenter  '垂直居中

   .Borders(wdBorderHorizontal).LineStyle = wdLineStyleInset  '加水平线

   End With

Next i

End Sub

利用宏,不仅仅可以选中所有的表格,甚至还可以直接操作表格的属性,是不是很强大?

有兴趣的朋友可以多学一点宏编程的知识,好像挺有趣的。

 

 

 

 

展开阅读全文

没有更多推荐了,返回首页