VBA应用开发与实例 李 辉 微软课程培训讲师
活动行程表 VBA编程环境 Office对象模型 VBA编程技巧与案例 Office XP开发版简介
MS Office开发平台的方向 Office高级用户 企业信息部门人员 软件开发厂商 模板开发,加载宏或构建小型项目
MS Office开发平台的好处 对企业和公司 对程序开发人员 对使用者的好处 降低培训成本,资源的回收利用 缩短研发时间,提高系统稳定性 减少摸索新系统的挫折
Office平台开发的关键 Office平台的通用语言——宏(VBA) 内置于Office应用程序,免费 完整的工作环境 宏录制器 对象浏览窗口
挑战第一关 善用宏简化工作
什么是宏 宏是一段定义好的操作,它可以是一段程序代码,也可以是一连串的指令集合。 宏的作用可以使频繁执行的动作自动化 节省时间,提高工作效率,又能减少失误
录制宏 执行宏的操作 开始录制宏 操作步骤 完成宏录制 运行宏 需要经常重复执行的某项任务,就可以把执行这些任务的步骤全部录制在宏里,把宏变为可自动执行的任务 开始录制宏 操作步骤 完成宏录制 执行宏的操作 执行宏的命令 在工具栏上设置宏按钮 使用窗体控件 使用图形对象执行宏 运行宏
VBA帮助你完成从必然王国到自由王国的飞跃 DEMO 充分发挥Office XP的强大功能,成为Office应用的真正高手
坚如磐石的安全性 宏的安全性 宏的保护方法: 安全级【高】通常适用于用户没有安装防病毒软件的时候 宏,就是一段定义好的操作,它可以是一段程序代码,它也可以是一连串的指令集合。宏的作用可以使频繁执行的动作自动化,它执行一组动作比用户一步一步执行要快得多,而且是完全按用户所设定好的要求,准确无误地执行。这样,既能节省时间,提高工作效率,又能减少失误,起到事半功倍的作用。 你可能听说过由计算机病毒引起的潜在威胁。“病毒”是一种在后台工作的隐藏宏或者软件程序,经常骚扰计算机用户,并且毁坏重要的数据文件以及应用软件。 宏的保护方法: 安全级【高】通常适用于用户没有安装防病毒软件的时候 选择安全级为【中】时,用户可以确保所使用的宏命令是安全的 安全级【低】的情况下,Office XP将不对宏作出任何检查
挑战第二关 深入浅出VBA
宏的结构 宏名 批注 宏程序 Sub 主界面() ' ' 主界面 Macro ' Coren Lee 记录的宏 2002-11-5 Sheets("主界面").Select End Sub 批注 宏程序
Visual Basic编辑器 用来编辑宏程序或制作更高阶的整合性应用程序 附属于Office之下,使用较少的系统资源,达到编辑应用程序的目的。
什么是工程 工程就是模块的集合,包括: 用户窗体 文件,例如Excel中的工作表以及图表工作表 模块 类模块 ActiveX文件 引用的其他工程
Visual Basic for Application 宏 VBA 为何要使用 VBA 宏缺少伸缩的弹性 记录了许多不需要的步骤 记录了许多不需要的资料 无法使用较深入的功能 无法完成重复性的工作 无法完成需要条件判断的工作
认识VBA VBA是一个通用程序语言,可共享Microsoft各种相关的重要软件。 以VBA编写的程序允许用户将其复制到Visual Basic中加以调试,用Visual Basic宏来控制Excel。 当记录宏不能满足用户需要或用记录宏无法记录命令时,可以用VBA语言创造宏来控制工作簿的各项操作。 创建用户对话框、工具按钮或自定义命令,把Excel提供的多个工具按钮连接起来,作为一个工具按钮。 利用重复语句控制循环宏内操作,利用不同参数执行某个相关功能模块,使宏指令完成一系列复杂操作。来连接多个宏。 VBA提供了许多内部函数,还允许用户自定义函数来简化对工作簿、工作表、图表等复杂操作。
VBA程序的基本架构 对象 属性 方法 事件 面向对象的开发方式 VBA是以操作Office对象为目的的程序语言 对象所属的特性或特征 控制对象的内建动作或功能,以便可以让程序顺利打开 事件 发生于对象上的事情
VBA与Visual Basic的差异 Visual Basic以界面为中心的开发方式 重点在使用者如何进行操作 重点在使用者最后看到什么
Excel对象结构 Application Workbooks Windows Addins …… Worksheets Charts Cells Range
使用对象的程序语法 Workbooks(“Mybook.xls”).Worksheets(“Sheet1”).Range(“B5”).Value = “ABCDE” 容器 容器 属性 Workbooks.Close 集合对象
Office 对象模型 顶级对象:Application 层次式对象模型结构 查看结构模型图(帮助) 对象浏览器 自动列出成员功能 对象属性 对象方法 事件:文档级和应用级
VBA的重要语法 Set Object1 = Object Object.Property = Value Object.Method (Setting)
VBA程序开发的步骤 设定引用的参数项目 定义对象变量 设置对象变量 完成对象的接口 对象属性 操作方法 事件程序
VBA控制结构 分支结构 Select Case 〈测试变量〉 If 〈条件1〉 Then Case 〈表达式1〉 〈语句块1〉 〈语句块2〉 · Case Else 〈语句块n+1〉 End Select If 〈条件1〉 Then 〈语句块1〉 ElseIf 〈条件2〉 Then 〈语句块2〉 · Else 〈语句块n+1〉 End If
VBA控制结构 循环结构 For 〈变量〉=〈初值〉 To 〈终值〉 Step 〈步长〉 〈语句块〉 Next 〈变量〉 For Each 〈对象变量〉 In 〈对象集〉 〈语句块〉 Next 〈对象变量〉 Do While 〈条件表达式〉 〈语句块〉 Loop
示例:在Excel中打印工资表 Sub InsertTitle() Selection.CurrentRegion.Select Cells(Selection.Row, Selection.Column).Select Range(Selection, Selection.End(xlToRight)).Select Selection.Copy ActiveCell.Offset(2, 0).Range("A1").Select Do Until ActiveCell = "" Selection.Insert Shift:=xlDown Loop Application.CutCopyMode = False End Sub
示例:对话框与外部应用程序 Private Sub turtle_Click() Private Sub donkey_Click() Const Answer = "TURTLE" Dim Tries As Integer Dim Message, Title, Default0, MyValue As String Tries = 0 Message = "What am I?" 'Set prompt. Title = "What am I?" 'Set title. Default0 = "******" 'Set default for input field. Question: Tries = Tries + 1 If Tries = 3 Then Default0 = "T*****" End If If Tries = 4 Then Default0 = "TUR***" MyValue = InputBox(Message, Title, Default0) MyValue = UCase(MyValue) 'Convert to uppercase …… Private Sub donkey_Click() MsgBox (" I am a donkey ") End Sub Private Sub Wabbit_Click() Call PlaySound(ActiveDocument.Path + "\wabbit.wav") End Sub
示例:保存并关闭系统 Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Dim abc abc = MsgBox("您确认要关闭本系统吗?", vbQuestion + vbYesNo + vbDefaultButton2, "确认") If abc = vbYes Then Worksheets("股票收益计算器").Unprotect Password:="1" Worksheets("股票收益计算器").Range("G13").FormulaR1C1 = "0" Worksheets("股票收益计算器").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="1" Sheets("说明").Select ActiveWorkbook.Save Else Cancel = True End If End Sub
程序编写的特殊考虑 如何启动特定版本的应用程序 如何使用当前的应用程序 如何结束应用程序 如何清除内存的占用 CreateObject GetObject 如何结束应用程序 Application.Quit 如何清除内存的占用 Set appObject = Nothing
挑战第三关 优化与部署
创建用户窗体 提示使用者选取、输入或浏览数据 使用控件 文本框输入文字 列表框选取内容 选择框选取一个或多个功能
用户窗体窗口的操作 建立用户窗体 配置ActiveX控件 设置窗口属性 配置控件属性及其事件 Load与UnLoad语句 加载到内存或从内存中释放 用Show和Hide方法控制对象的显示和隐藏
DEMO VBA帮助你完成从必然王国到自由王国的飞跃 使用Excel创建进销存管理系统 在Word中完成员工信息的录入和查询 妙用窗体制作小游戏 充分发挥Office XP的强大功能,成为Office应用的真正高手
封装应用程序 菜单栏的替换 窗口环境的替换 工具栏的替换 完成应用程序封装
保护应用程序开发 加入程序修改口令 使用数字签名 Office XP技术允许通过使用“数字证书”对文件或宏进行数字签名。你可以把数字证书看作是身份证的电子版本。 使用“数字签名”以后有什么效果呢?如果整个文件都被签名,任何人(包括你自己)将它修改的话,文件的签名都会被破坏。也就是说,签名将保证自签名以后后该文件没有被修改。
打包向导 打包操作可创建一个程序包,将应用程序安装到用户计算机。 程序包包含一个或多个.cab文件以及运行应用程序所必须安装的其他所有文件 打包步骤 确定需要分发的文件 如果需要,创建应用程序组件的依赖文件 确定要将文件安装到用户计算机的什么位置 创建程序包
VBA帮助你完成从必然王国到自由王国的飞跃 DEMO 充分发挥Office XP的强大功能,成为Office应用的真正高手
挑战第四关 善用Office XP开发版
Office XP产品系列 Office XP 标准版 专业版 企业版 开发版 Word ` Excel Outlook PowerPoint Access FrontPage (SharePoint) 开发工具 小型语言套件(英文界面) 素材库 建议市场零售价 普通版全包装产品 ¥3940 ¥4720 -- ¥6310 普通版许可证 ¥2925 ¥3528 ¥4405 ¥4926 升级版全包装产品 ¥1970 ¥2750 ¥4340 升级版许可证 ¥1408 ¥2102 ¥2605 ¥3510 New Office XP Suites… We have a new addition to Office suites: Microsoft Office Professional Special Edition. This version will only be available for a limited time only. Includes Microsoft FrontPage and Microsoft Publisher Version 2002, as well as a limited edition Microsoft IntelliMouse Explorer. At a great price you’ll get all the newest versions of the most popular Office family programs in one offer!
Microsoft Office 开发平台的特点 降低开发和部署的总成本 可利用 Office 部署工具 利用流行和熟悉的技术 开发量极小 减少使用者的培训负担和支持费用 培训不再必不可少 提高了对需求的及时反应能力和解决方案的灵活性 起点高,开发周期短
MS Office 的开发原则 MS Office 是一个功能齐全的应用系统 MS Office 是一个灵活方便的开发平台 能不开发就不开发 很多功能 Office 原已提供 对 Office 了解越多,开发者的效率越高 Office 开发者:全球 260 万 Office 开发版—Office 完备开发工具
Office 开发工具的发展概况 Office 从一开始就是一个开放的系统 Office 97 以前 WordBASIC Access Basic VBA in Excel Office 97: Visual Basic for Applications 5.0 (Outlook 支持 VBScript) Office 2000: Visual Basic for Applications 6.0 和 Script Office XP…
Microsoft Office XP 开发版 Office XP 中文开发版:面向 Office 开发人员的开发工具和示例 Windows 组件更新 Visual SourceSafe:源代码控制软件 Microsoft Exchange 2000 Server Developer Edition Microsoft SQL Server 2000 个人版的开发和测试版 带有 FrontPage 的 Microsoft Office XP 专业版 Microsoft Office XP 素材库 小型语言套件(切换为英文界面)
Office 开发版所提供的开发环境 开发项目 开发文件 Exchange 工作流项目 仪表盘项目 SQL Sever 工作流项目 HTML 页 框架集 样式表 Active Server Page XML 文件 文本文件
工作流:基本概念 描述用作业务处理模型的应用程序 常用于强化业务规则 状态和事件 状态:一个项目的状态属性的离散值 事件:可对项目执行的操作 转换:一种特殊类型的事件,使项目由一种状态转换到另一种状态
工作流设计器 可以在几乎任何一种编程语言或开发环境下开发工作流应用程序 借助工作流引擎和专门的工作流建模工具可以简化工作 Office Developer 利用图形用户界面(GUI)将工作流过程表示为可自动操作、扩展和编辑的图表
数字仪表盘的基本概念 数字仪表盘是集中的知识管理入口。通过数字仪表盘,知识工作者可以在合理的信息负载下掌握必要的和统一的信息 从技术的角度看,数字仪表盘是一个 Active Server Page (ASP),它引用一个或多个 Web 部件 在数字仪表盘的中心是 Web 部件。加载仪表盘时,仪表盘将检索已设置要显示的 Web 部件
Web 部件 Web 部件是可重复利用的部件,并且支持一系列用于确定如何在数字仪表盘中呈现 Web 部件的标准属性。Web 部件遵循常规标准,可以将它们存储在用于为本单位组合所有数字仪表盘的库中 Web 部件易于生成。用户可以创建相对简单的 Web 部件,通过使用开发环境可以创建更复杂的 Web 部件 可以从三个地方生成 Web 部件:Microsoft® Office XP Developer、仪表盘自身或用于 Microsoft® Visual InterDev® 的 Web 部件生成器加载项
使用示范代码库共享代码 可以在集中数据库中存储和管理可重复利用的代码 包含一个大型数据库,包含预先编写的代码 示范代码库支持拖放操作以及剪切和粘贴操作
学习Office编程之路 语言特性 VB/VBA Office程序特性 对象模型 程序整合优化 案例研究 Excel、Word、PowerPoint、Outlook、Access 程序整合优化 案例研究
李辉 Mail: bookyard@tres.tj.cn