转贴(电脑报):VBA开发实用指南

VBA开发实用指南
唐大中 附录文章

  VBA(Visual Basic for Application)是Office自带的二次开发工具,可为日常办公带来极大的便利。本文讲述Office各个成员VBA开发的常用对象和其相关的属性、方法和事件(包括Word、Excel、PowerPoint等),并给出相关的实例代码。

  一、VBA基础
  1.什么是VBA

  在Office对于一些烦琐、重复的操作,用户可以通过“宏”来实现。“宏”即是由一系列命令和指令组合而成的命令集,其本质是VBA代码组成的程序。VBA是微软在其开发的应用程序中共享的通用自动化语言。

  2.录制/运行宏

  VBA初期开发可通过录制“宏”的操作来获取代码,在Office中几乎所有的操作均可通过录制“宏”来获取代码。这里,我们通过一个简单的“宏”录制实例来学习:在Word中将所有的“电脑”字样替换为“计算机”,并插入一张4行2列的表格。

  在Office中录制宏,可单击“工具→宏→录制新宏…”菜单命令实现,单击该命令后将出现“录制宏”对话框,如图1所示。

  其中,“宏名”框用于为录制的宏设置名称,可使用默认的“Macro1”。“工具栏”和“键盘”二个按钮分别用于设置宏的触发位置。“将宏保存在”框可设置宏的保存位置,一般包括“Normal.dot”(共用模板)和当前文档2种,建议保存在当前文档中,以免对所有文档产生影响。在“说明”框中可输入对该宏的相关说明。单击“确定”按钮,即可开始录制宏。此时在文档编辑界面中将显示“宏录制”工具栏。该工具栏有2个与录音机非常类似的按钮,第一个按钮为“停止录制”,第二个按钮为“暂停录制”。在录制过程中可随时通过这二个按钮来进行控制。

  随后按常规操作来实现前述的任务,操作完成后单击“停止录制”按钮,结束录制即可。

  注意:录制“宏”时可使用鼠标单击菜单和按钮,但无法录制鼠标在文档窗口中的移动,因此必须通过键盘来实现这些动作。此外,Office中所有录制的“宏”,其名称的首字符必须为字母或汉字、数字及下划线(名称最多可为255个字符),且“宏”名称中不允许包含空格。

  运行已录制的“宏”,可单击“工具→宏→宏”菜单命令。在出现的“宏”对话框的“宏名”下拉框中选择需运行的宏,然后单击“运行”按钮即可。随后Word将自动重现前述执行的操作,避免了重复的办公操作。

  3.宏的局限性

  虽然Office的大部分操作均可用录制“宏”的方法来保存,但录制的“宏”仅“忠实”地再现了特定的操作,对于一些需要进行逻辑判断和流程控制的操作,则显得力不从心,如自动替换多个不同的内容时,按录制“宏”的方式操作,需要按替换内容的数量录制多个“宏”,且每个“宏”仅可用于某个内容的替换,反而为工作增添了麻烦。

  录制“宏”存在很多局限性,除无法进行逻辑判断和流程控制操作外,还包括很多。如交互能力较差、无法显示Office的内置对话框、无法显示用户自定义的窗体和无法创建复杂的工具栏或修改菜单等。

  4.VBA编辑环境

  虽然“宏”存在很多局限性,但通过录制“宏”获取了VBA代码后即可通过VBA编辑器来为代码添加逻辑控制并设计流程等。以Word 2002为例,“宏”录制完成后,可在运行宏对话框中选择录制的宏并单击“编辑”按钮,即可显示VBA编辑环境,如图2所示。

  VBA编辑环境由工程资源管理器、属性窗口和代码编辑/窗体设计窗口等部分组成。在工程资源管理器中列出当前打开的所有VBA项目,属性窗口用于设置相关对象的属性,代码编辑/窗体设计窗口则可输入模块的代码或编辑窗体和类模块。

  二、VBA开发共用对象详解
  VBA和其他面向对象的开发语言类似,同样有非常多的对象组成,且不同的Office成员即提供了大量的开发对象,如工具栏、Office助手、内置对话框和窗体等。

  (一)工具栏及其控件对象
  在Office中通过VBA开发工具栏和菜单,需使用Office提供的CommandBar、CommandBarButton、CommandBarComboBox等对象,这些对象即代表工具栏、工具栏按钮和工具栏下拉框,通过这些对象可编制出各类复杂的工具栏或菜单。

  1.CommandBars集合

  该集合代表Office所有的工具栏,可用名称或索引号指定菜单栏或工具栏,但仅可用名称指定一个菜单、快捷菜单或子菜单。如两个或两个以上自定义菜单或子菜单名称相同,则返回第一个具有该名称的对象。

  其Add方法用于新建一个工具栏,并返回 CommandBar对象。

  语法:expression.Add(Name, Position, MenuBar, Temporary)

  参数说明:

  Name为可选的Variant 类型,代表新工具栏的名称。如果省略,则使用默认的名称;Position为可选的Variant 类型,代表新工具栏的位置。该参数值可通过VBA常量进行设置,如msoBarLeft、msoBarTop、msoBarRight、msoBarBottom常量(设置新工具栏位于软件工具栏中位置);msoBarFloating常量(代表新工具栏可移动);msoBarPopup常量(代表新工具栏为快捷菜单)等;MenuBar为可选的Variant 类型,用于设置是否用新工具栏替换活动工具栏;Temporary为可选的Variant 类型,用于设置新工具栏是否暂时有效。

  2.CommandBar对象

  该对象代表应用程序中的工具栏,新建工具栏的控件均以该对象为载体。

  (1)Controls属性:返回CommandBarControls对象,代表指定工具栏中的所有控件。

  (2)NameLocal属性:返回由应用程序版本语言所设置的工具栏名称,如对软件的内置工具栏设置会出现错误。

  (3)Position属性:返回或设置工具栏的位置,值可通过VBA常量进行设置,如msoBarLeft、msoBarTop、msoBarRight、msoBarBottom、msoBarFloating、msoBarPopup或msoBarMenu等。

  (4)Type属性:返回或设置工具栏的类型,值可通过VBA常量进行设置,如msoBarTypeNormal(工具栏为普通类型)、msoBarTypeMenuBar(工具栏为菜单类型)、msoBarTypePopup(工具栏为弹出菜单类型)等。

  (5)Reset方法:将内置工具栏重置为默认设置,在恢复软件原有工具栏或菜单时非常有用。重置内置工具栏将删除其中的自定义控件并恢复其内置控件。

  3.CommandBarControls集合

  该集合代表工具栏中的所有工具栏控件。

  其Add方法用于在CommandBarControls集合中增加一个工具栏控件。

  4.CommandBarControl对象

  该对象代表工具栏控件,对自定义工具栏控件,可使用 CommandBarButton、CommandBarComboBox和CommandBarPopup对象进行定义,而对软件内置的控件进行操作,而该控件又无法使用上述三个对象表示,则可使用CommandBarControl对象。

  (1)BeginGroup属性:用于设置工具栏控件是否分组显示。

  (2)Caption属性:用于设置工具栏控件的标题文字,并可作为默认的控件屏幕提示。

  (3)Id属性:用于设置CommandBarButton、CommandBarComboBox和CommandBarControl对象的功能,这些控件可直接设置为内置工具栏控件的ID,这样该控件即具备了软件内置的相应功能,自定义控件的ID属性均需设置为1。

  (4)Copy方法:将工具栏控件复制到已有的工具栏中。

  语法:expression.Copy(Bar, Before)

  参数说明:

  Bar为可选的Variant 类型,代表目标工具栏,如果省略,则控件将复制到自身所在的工具栏;Before为可选的Variant 类型,代表新控件在指定工具栏的位置,即新控件将添加至该位置的控件前,如果省略,则控件将复制到工具栏的末尾。

  (5)Type属性:返回工具栏控件的类型,可通过VBA常量进行引用,常用的工具栏控件类型如下表所示:

常量名称
含义

msoControlButton
控制按钮

msoControlButtonDropdown
带下拉列表的按钮

msoControlButtonPopup
带弹出菜单的按钮

msoControlComboBox
下拉组合控制框

msoControlDropdown
下拉列表控制框

msoControlEdit
文本框

msoControlExpandingGrid
可扩展的表格

msoControlGraphicCombo
图像下拉组合框

msoControlGraphicDropdown
图像下拉列表框

msoControlGrid
表格

msoControlPopup
弹出菜单

  5.CommandBarButton对象

时间: 2024-08-03 21:11:00

转贴(电脑报):VBA开发实用指南的相关文章

苹果电脑光盘刻录实用指南

  说到用苹果来刻录光盘,是许多同行所熟悉的,一台苹果机,一部刻录机再加上刻录软件就行了.但光盘有着多种格式,不同种类的光盘有着不同的用武之地,当你面对各种复杂的情况时,你是否能够选择最合适的应对办法呢?看了我的文章后,你就会对光盘刻录熟悉起来,自然游刃有余. 说到苹果的刻录问题,必须要谈到Toast,就是我们常说的面包机,它是现在在苹果上应用最广泛的刻录软件,我们这篇文章就以Toast为例,讲讲它的设定与使用.当然,Toast并不是万能的,虽然它也在不断改进和升级,在文章里你还会看到在一些特殊

移动APP测试实用指南

 开发实用指南"> 译者注:本文从测试人员的角度出发,提出了100多个在测试移动App过程中需要考虑的问题.不管你是测试人员.开发.产品经理或是交互设计师,在进行移动App开发时,这些问题都很有参考价值.我和Queen合力译出此文,分享给大家,希望有所帮助和启发. 测试人员常被看作Bug寻找者,但你曾想过他们实际是如何开展测试的吗?你是否好奇他们究竟都做些什么,以及他们如何在一个典型的技术项目中体现价值? 作者将带你经历测试人员的思维过程,探讨他们测试移动App时的各种考虑.本文的目的在于

电脑报“乔客门”,看中国网站系统开发

乔客  电脑报"乔客门",看中国网站系统开发   无意上网,竟看到涉及到那么多网络名流的一场争辩,姑且称为:"乔客门"事件吧,很新鲜,也很激动.软件版本因故推迟,本在业界也算是正常之事,只不过乔客心急了一些,先多预收了N个99元,一旦离客户的期望值有很大差距,就会引起一些交了99元而又想得到很多的穷站长们的围剿,但这个只要做好客服工作并在正版出来给予更好的补偿后,应该就会得以很好的解决的.偏偏这时候电脑报来凑热闹,可能是年底没有太多的素材来满足读者的需求了吧,就拉个

交互设计实用指南系列(二):用户信息可及

可及,通俗的说是"可以达到",加上主语和宾语,在"交互设计"这个大的语境下,含义应该是"用户可以达到自己的操作目标",这不是和"有效性-用户的操作是有效的"重复了吗?其实,在交互设计实用指南中,"可及"是一个狭义的概念,是放在有效性下面的,具体解释为"色盲.肢体残疾等特殊人士可以完成基本操作".更扩展一下,这个特殊人群应该还包括老人儿童,文盲等对信息使用不擅长的人. 也就是说,交互设计实

《黑客秘笈——渗透测试实用指南》—第1章1.1节搭建渗透测试主机

第1章 赛前准备--安装 黑客秘笈--渗透测试实用指南 本章将直接探讨攻击系统的配置方法.安全测试最为重要的方面就是有一个可重复的流程.所以,您需要有一套标准化的基准系统.测试工具和测试流程.本章将会讲解配置测试平台的方法,以及本书示例所需的额外工具的安装步骤.只要按照本章的步骤配置测试平台,您就能够重现后续章节中我所提供的案例.演示.好!让我们全力以赴.积极备战吧. 1.1 搭建渗透测试主机 黑客秘笈--渗透测试实用指南 在进行渗透测试的时候,我都会配置两套不同的测试主机.其中一台是Windo

《黑客秘笈——渗透测试实用指南》—第2章2.4节Web应用程序的扫描

2.4 Web应用程序的扫描 黑客秘笈--渗透测试实用指南 网络扫描器.Peeping Tom可大致揭露测试目标的网络构造.在此之后,我们就可以进行Web应用程序扫描了.本文主要围绕Burp Suite程序讨论Web应用程序的扫描方法.确实有许多开源.免费的工具可进行Web应用程序扫描,例如ZAP.WebScarab.Nikto.w3af等程序都很不错.但是我们有必要再次强调一下,渗透测试的工具应当是速度最快.扫描结果最好的测试工具.虽然Burp Suite专业版(http://portswig

Java Web十条开发实用小知识_java

 1.${ctx}与 ${pageContext.request.contextPath}这两个为一个意思,都是获取当前根目录. 不同的是${ctx}为${pageContext.request.contextPath}的简写版,经查证之后果真如此,发现在项目的一个文件内有这样一段话 的配置 复制代码 代码如下: <c:setvar="ctx"value="${pageContext.request.contextPath}"/> 注意在使用${ctx的

交互设计实用指南:交互设计面向用户追求可用性

文章描述:交互设计实用指南系列一:我们眼中的交互设计. 交互设计(Interaction Design, 缩写 IxD 或者 IaD),是定义.设计人造系统的行为的设计领域.人造物,即人工制成物品,例如,软件.移动设备.人造环境.服务.可佩带装置以及系统的组织结构.交互设计在于定义人造物的行为方式(the "interaction",即人工制品在特定场景下的反应方式)相关的界面(Wikipedia).通过对界面和行为进行交互设计,从而可以让使用者使用人造物来完成目标,这就是交互设计的目

交互设计实用指南系列

交互设计(Interaction Design, 缩写 IxD 或者 IaD),是定义.设计人造系统的行为的设计领域.人造物,即人工制成物品,例如,软件.移动设备.人造环境.服务.可佩带装置以及系统的组织结构.交互设计在于定义人造物的行为方式(the "interaction",即人工制品在特定场景下的反应方式)相关的界面(Wikipedia).通过对界面和行为进行交互设计,从而可以让使用者使用人造物来完成目标,这就是交互设计的目的. 从用户角度来说,交互设计是一种如何让产品易用,有效