Office VBA从新手到高手
上QQ阅读APP看书,第一时间看更新

第1篇 基础篇

第1章 初识VBA

本章视频教学录像:23分钟

高手指引

VBA是Office办公组件中非常强大的工具之一,可以帮助解决用户日常工作繁琐的操作过程。本章主要介绍VBA的定义、历史,以及其能够完成的工作等,并了解它与常见的编程语言Visual Basic及Office办公软件中宏的联系与区别,并通过一些Office中基本的VBA应用逐渐认识VBA。

VBA虽然依附于Office软件,但它本身是一门独立的编程语言,因此,VBA在不同版本的Office中的用法几乎没有差异。考虑到目前流行的操作系统和Office版本,本书以Windows 7和Office 2010为环境进行讲解和演示。

重点导读

VBA介绍

VBA、VB及宏的联系和区别

VBA宏的使用

1.1 什么是VBA

本节视频教学录像:6分钟

VBA是Visual Basic for Application的缩写,是微软公司开发的,它是附属在Office办公软件包中执行通用的自动化任务的编程语言,它是在Office中包含的一种用于扩展Office功能的Basic语言,是从Visual Basic衍生出来的,基于Office的应用开发环境。它主要包括Excel VBA、 Word VBA、PowerPoint VBA、Access VBA等几个组件类型,其主要作用是自定义应用程序中的功能,以及加强应用程序之间的互动,帮助使用者根据自己的需要在Office环境中进行功能模块的定制和开发。

1.1.1 VBA的历史

20世纪70年代,计算机世界出现了一个新的开发工具——Basic,由于该开发环境具有简单、方便、易学等特点,很快得到了开发者的喜爱,随着技术的发展,增加了结构化和可视化程序设计的功能,Basic也逐渐升级成为了后来为人熟知的Visual Basic,简称VB,可以快速开发Windows环境下功能强大、图形界面丰富的应用程序。

与此同时,微软公司的Office办公软件因为功能的强大、操作简单等特点开始进入各行各业,并逐渐成为日常办公中常用的应用软件。由于Office属于通用型应用软件,因而在某些特殊数据处理方面很难快速实现解决方法。实现应用程序的自动化可以提高工作效率,而为了实现应用程序的自动化,人们往往需要学习不同的自动化语言。例如:可以用Excel的宏语言使Excel自动化,使用Word Basic使Word自动化等。为了更好地满足这类工作的需要,越来越多的人迫切需要对Office环境进行二次开发和功能定制。

作为Office开发者与服务商——微软公司,为了解决此问题,在结合VB与Office的优点后,推出了VBA,可直接对应用程序环境的相关功能与模块,进行特殊的功能开发与定制。

1991年Visual Basic1.0版本出现,提供了简易的图形设计特点,用于设计功能强大、多样的传统应用程序。随后版本功能组件完善,1993年,Visual Basic被整合于Excel 5.0和Project 4.0中,可使用Visual Basic和OLE 2.0整合不同的应用程序、达到自动化运行,并生成各种自定义解决方案。1995年诞生了Visual Basic Scripting(VBScript),VBScript是用于设计Web内容的高性能描述语言,允许开发人员在Web页面链接和自动化各种对象参数,例如OLE对象。VBScript同时也成为整个Internet的免费开发语言规范。1998年微软公司推出了VBA 6.0和VBA开发工具组件6.0,VBA 6.0作为Office 2000的核心组件,已成为快速开发自定义应用程序的强大的开发工具平台。目前在Office 2010中继承了Microsoft Visual Basic for Application 7.0。

1.1.2 VBA的优缺点

通过VBA,能够实现高效办公,减轻操作者的工作负担,使大量的重复工作变得简单快捷,它具有以下优点。

⑴ 一个简单的VBA程序可以实现大量的重复性的操作。例如使用Excel在AI:A1000区域插入10000张图片,且将图片全部调整为所在单元格的大小,其位置刚好与单元格上边距与左边距一致,若手工实现此功能至少需要几个小时,而用VBA则可以在几秒内完成。

⑵ VBA集成在Office软件中,可以直接使用Office中的函数。

⑶ VBA编辑器提供了大量的控件和完备的语言系统,用户可以根据自己的需求编写VBA程序,从而创建功能完备的系统。

⑷ 相对于其他程序语言,VBA属于简单的编程工具,超过60%的代码可由录制宏产生,并且提供了可视化的设计工具。

缺点:虽然VBA比较简单,毕竟中间也涉及程序的编制,因此也需要一定的学习时间。另外它不能像其他程序一样可编译成可执行文件,必须以Office为载体。

1.1.3 VBA能够完成的工作

VBA在功能不断增强的同时,其应用领域也在逐步扩大,不仅包括文秘与行政办公数据的处理,还包括财务初级管理、市场营销数据管理和经济统计管理,以及企业经营分析与生产预测等相关领域。VBA可以完成以下主要工作。

⑴ 加强应用程序之间的互动,帮助使用者根据自己的需要在Microsoft Office环境中进行功能模块的定制和开发。

⑵ 将复杂的工作简单化,重复的工作便捷化。

⑶ 创建自定义函数,实现Microsoft Office内置函数未提供的功能。

⑷ 自定义界面环境。

⑸ 通过对象连接与嵌入(Object Linking and Embedding,OLE)技术与在Microsoft Office中的组件进行数据交互,从而实现跨程序完成任务。

1.2 VBA、VB及宏的联系和区别

本节视频教学录像:4分钟

前面已经介绍了VBA的发展历史,在这一节里就来看一下VBA与VB,以及Microsoft Office中经常遇到的宏之间的关系。

1.2.1 VBA与VB的联系与区别

前面已经提到Office开发者与服务商——微软公司,在结合VB与Office的优点后,推出了VBA,那么VBA和VB之间有什么联系吗?实际上可以将VBA看做是应用程序开发语言Visual Basic的子集,VBA和VB在结构上非常相似,但二者也有区别,主要体现在以下几个方面。

⑴ VB具有独立的开发环境,可以独立完成应用程序的开发;VBA却必须绑定在微软公司发布的一些应用程序(例如Microsoft Word、Microsoft Excel等)中,其应用程序的开发具有针对性,同时也具有很大的局限性。

⑵ VB主要用于创建标准的应用程序;VBA可使其所绑定的办公软件(例如Microsoft Word、Microsoft Excel等)实现自动化,同时也能实现高效办公的目的。

⑶ 使用VB编写的应用程序,只要通过编译(Compile)过程,制作成可执行文件,就可以成为一个独立在窗口文件的程序,随时都可以被运行,用户不必安装VB;使用VBA编写的应用程序必须运行在程序代码所附属的应用程序中。也就是说,在一般版本的Office中,用户并不能将VBA程序制作成为可执行文件。所以,必须先启动相关的应用程序,并打开程序代码所在的文件,才能运行指定的VBA程序。

⑷ VB运行在自己的进程;VBA却运行在其父进程中,运行空间受其父进程的完全控制。就进程而言,VB是进程外,VBA是进程内,VBA的速度要比VB快。

总之,VBA与VB都属于面向对象的程序语言,其语法很相似,在使用时,用户可以依据自身的需求,配合VB的语法编写合适的程序代码内容。VBA作为自动化的程序语言,不仅可以实现常用程序的自动化,可以创建针对性强、实用性强和效率高的解决方案,而且还可以将Office用作开发平台,开发更加复杂的应用程序系统。

1.2.2 VBA与宏的联系与区别

在使用Office组件的时候,经常会遇到宏的问题,例如在使用Word 2010过程中,有时会弹出下面的对话框。那么什么是宏呢?

宏是能够执行的一系列VBA语句,它是一个指令集合,可以使Office组件自动完成用户指定的各项动作组合,从而实现重复操作的自动化。也就是说,宏本身就是一种VBA应用程序,它是存储在VBA模块中的一系列命令和函数的集合,所以广义上说两者相同;狭义上说,宏是录制出来的程序,VBA是要人手编译的程序,宏录制出来的程序其实就是一堆VBA语言,可以通过VBA来修改,但有些程序是宏不能录制出来的,而VBA则没有这个限制,所以可以通俗理解为VBA包含宏。

从语法层面上讲,二者没有区别,但通常宏只是一段简单的或是不够智能化的VBA代码,使用宏不需要具备专业知识,而VBA的使用则需要专业的知识,需要了解VBA的语法结构等。并且宏相比于VBA具有下面一些不足。

⑴ 记录了许多不需要的步骤,这些步骤在实际操作中可以省略。

⑵ 无法实现复杂的功能。

⑶ 无法完成需要条件判断的工作。

由于宏的录制和使用相比VBA来说,更为简单,本书主要介绍VBA的使用。

1.3 VBA的应用赏析

本节视频教学录像:4分钟

前面已经介绍了VBA的基本知识,在进一步学习VBA的使用之前,让我们先来看一些VBA的应用。

1.3.1 VBA在Microsoft Excel中的应用

在学校里面考完试后,经常需要把学生的成绩录入,然后统计不及格学生的名字,例如下面这个应用。

如果需要统计至少三门课不及格的同学,可以事先编好VBA程序,在Excel工作薄中添加一个按钮,单击按钮时自动给出结果。

1.3.2 VBA在Microsoft Word中的应用

例如在高校使用的科研基金申请书中,当填完经费申请表内容后,在首页中有一个“检查保护”按钮,当单击该按钮的时候,会自动统计经费申请表的内容是否符合要求,并提示输入密码,生成文件的密码保护。

1.3.3 VBA在Microsoft PowerPoint中的应用

利用VBA可以制作Microsoft PowerPoint课堂测验,例如下图就是使用VBA制作的一个在线考试的Microsoft PowerPoint。

1.4 综合实战—宏的使用

本节视频教学录像:6分钟

对于VBA初学者来说,最好的学习方法就是从宏开始,在了解宏的基础上学习VBA,可以达到事半功倍的效果。下面我们通过一个简单的综合实例,了解一下宏的使用,主要包括宏的录制和运行。

这个例子是制作一个工资条,需要把下图的工资表制作成工资条。

效果如下所示。

【实例1-1】宏的建立及使用。

一般的操作方法如下所述。

选中第一行,复制,选中第二条记录所在行,插入复制的单元格。需要反复地执行这样的操作,才能达到最终的要求。下面就看一下如何使用宏来完成这项繁琐的工作。

1 打开源文件ch01\1-1.xlsx。选中第一行的第一个单元格。然后单击【开发工具】 【录制宏】按钮。

2 此时会弹出【录制新宏】对话框,将宏名更改为“修改工资单”,然后可以设置快捷键。单击【确定】按钮。

3 单击【使用相对引用】按钮。

4 用鼠标选中第一行,然后单击鼠标右键,选择【复制】选项。

5 用鼠标选中第三行,单击鼠标右键,选择【插入复制的单元格】选项。

6 将鼠标移到第三行的第一个单元格,然后单击【停止录制】按钮。

这样,要创建的宏就录制完成了,就可以按照下面的使用方法使用这个宏了。

7 将鼠标移到第三行的第一个单元格,单击【宏】按钮。

8 此时弹出【宏】对话框,选择里面的【修改工资单】选项,然后单击【执行】按钮。

9 这样就可以添加一行工资表头,可以采用同样的步骤继续为每行数据增加工资表头。