VBA For ET 教材连载系列】一
贡献者:罗刚君  日期:2009-04-26  阅读:878 
相关标签:pub2007  >  二次开发  >  VBA
序言

  应金山地邀请,从今天开始,为WPS论坛提供VBA For ET相关的教材连载。
  制表对于任何企业、工厂、贸易公司来说都是日常办公的重点。如何让工作更有效率,同时提升数据运算的准确性,自然是办公同仁需要面对的一个重要课题。
  表格软件本身可以进行运算、预测、分析、图表展示、数据透视等等,对于日常简单的工作需求来说可以应付。然而仅仅停留在应付阶段,若要处理大量的数据运算,或者实现办公自动化,没有VBA是无法实现的,永远疲于奔命,永远处于被动…….
  随意举一实例,假设某总公司每周需汇总10个分公司的报表,每个报表中包含生产数据、进库数据、出货数据及收支损益等等,将数十个工作簿、上百个工作表按条件合并且生成透视表,
这是一项相当艰巨的任务。人工按条件区分、合并等等不仅效率差,而且出错机率极高。而使用VBA可以单击按钮后数秒钟就完成。两者在效率上的差异可能达上万倍。
  基于以上事实,推广VBA相对于制表业来说具有极其重要的意义。
  转换另一个视角,WPS是国内最大的办公Office软件开发公司,其产品WPS套件支持VBA的开发语言。但因WPS缺乏应有VBA帮助文件及教材,一直以来未得以推广,甚至连WPS用户的部分中坚分子也完全不了解VBA,甚至对其持抵制态度。
  为了让WPS得到更多的认同感,也为了制表用户可以提升办公效率及数据运算的准确度,本月开始,WPS论坛每月提供6-8VBA相关文章。期望通过这个论坛的平台,让用户了解VBA,也更好地借助国产软件WPS完成工作……
  专贴形式说明:论坛VBA专栏贴子与纸质出版物在形式上会有所区别,无法像正规出版物一样要求每页之间的承接性和连惯性。但仍然遵循一个基本的常识:先理论后案例,先基础后进阶。
  本连载教材计划前期用五到六篇讲述VBE环境的设置,以及VBA常见语句的语法。而后续则以案例配套案例解说形式发贴,力图让用户通过案例了解VBA的用法与语法;而最后再开发一个专业型的插件做为结束篇。
  金山对我有较高的期望,我自己也打算为国产龙头尽一份心力,但鉴于个人学识有限,及专栏教材的经验缺乏,难免产生词不达意或者心有余而力有未逮,请广大读者、网友及时提出批评指正,使教材早趋完善,也让WPS——大家共同的梦想走得更远。
                   
罗刚君
2009-4-26



VBA For ET 教材连载系列】二
贡献者:罗刚君  日期:2009-04-26  阅读:969 
相关标签:pub2007  >  二次开发  >  VBA
认识VBA
2.1.认识VBA
  VBA就是Visual Basic For Application的简称,其前身就宏。通常把那些能自动执行某种操作的命令统称为
宏的英文名称为Macro,意思就是由用户定义好的操作,即连续的命令及操作步骤。宏的作用是可以使频繁执行的动作自动化,并准确无误地执行。宏经过了前期的XML宏后发展到现在的VBA语言,在功能和代码格式上都有较大地进步。
    VBA是一个程序语言,可以编写宏程序。ET VBA需要依附于主程序ET才能运行。VBA不能编写单独运行的程序 exe文件。
ET中,默认状态下并未集成VBA,而是需要单独安装。在论坛中有网友提供下载,用户可以下载、安装后再阅本教材。
安装VBA后,在ET的菜单中将产生新的二级子菜单【宏】,见图2.1所示:
2.1 宏菜单

2.2.VBA的安全性
  事物都有双面性,程序语言尤其如此。程序的功能越强,那么同时意味着用它做破坏也可以具有更大的破坏力。VBA依附于Excel程序,但它做为病毒传播时,可以破坏的对象却不局限于Excel程序,磁盘中所有文件皆可以任意修改。正因如此,学习VBA时,有必要掌握
好这把双刃剑。
    在默认状态下,ET2009都是禁用宏的,以确保用户不会因潜在的宏病毒而受破坏。但是同时也带来另一个问题——正常的VBA程序无法执行。所以通常有三种做法:
    不用VBA的用户,彻底禁用宏,杜绝宏病毒蔓延;
    常用VBA程序,包括自己开发的和别人开发的程序的用户,可以将宏的安全性稍加提高,即遇到宏时提示用户,当用户确定代码安全时再执行。
    第三类自编自用型用户或者完全信任宏代码开发者的用户,则可以将宏的默认设置修改为无限制。即允许任何宏执行,从而提升工作的效率。笔者属于第三类,永远允许所有宏自动执行。
2.3.设置安全性对话框
  单击菜单【工具】\【宏】\【安全性】,可以看到一个安全性对话框,在该对话框中可实现安全性级别的调整。
非常高
    指打开带的VBA代码的工作簿时,完全禁止禁止宏程序的运行,而受信任位置例外。但目前ETVBA方面有待完善,暂时未提供受信任位置供选用。如果需在开发在非常高的安
全性设置下仍然可以执行的VBA程序,只能借助第三方软件来实现,例如VB开发Com加载宏。

    允许执行经过签署的宏,其它宏则禁止执行。这需要使用到数字签名功能。

    表示开启带有宏代码的工作簿时,弹出提示,警告用户工作簿含有可以具有病毒的宏代码。如果用户确认安全则执行,否则可以禁止代码执行。

    在这种设置下可以执行任何VBA程序,高效却不安全。学习VBA时,读者应尽量选择,以使学习进度更快。笔者数年来也将安全性设置为低。
2.2 了解宏安全性设置

2.4.获取VBA帮助
  ET中未集成VBA,自然也不存帮助文件,安装VBA环境后,仍然不可调用VBA帮助。
    但是仍然可以快速信息中获取部分有利于编程的信息。例如需要入代码VBA中代表地址的
语句,而自己仅仅记得其以A开头。那么可以利用VBA的快速信息获取帮助。步骤如下:
    (1使用快捷键【Alt+F11】进入VBE界面;
    (2单击菜单【插入】\【模块】;
    (3在模块中录入代码Range("A10").,当输入半角状态下的点后程序后弹出快速提示信息,见图2.3所示。其中Address即为VBA中用于获取地址的语句。而如果改用[A10]或者cells(10,1)表示单元格,则无法产生提示信息;
2.3 获取快速信息

    (4将光标移到Address上后单击TAB键,即可录入目标词汇Address,这比手工录入
的方式更准确。手工录入可能存在Adress或者Addrees的潜在错误。
    (5如果需要录入设置状态栏,但不确定用什么方法表示状态,也可以借用这个快速信息获取有限的帮助。在代码窗口中录入Application.VBA会提示Application对象的所有方法和属性,而状态栏属性的代码StatusBar自然也在其中,当录入St后程序会自动定位于代码StatusBar上,使用Tab键即可完成代码的录入。
2.4 获取Application的快速信息statusbar是什么意思

综述:
    ET 2009VBA可以为工作带来效率的提升,也可能带来安全隐患。用户需要使用过程
中根据需要设置安全性。
    ET未提供足够的帮助文档,但可以借助有限的提示信息快速而准确地录入不确定的VBA语句。
    在后面两节中将带你认识VBE环境及认识VBA的过程。
程序二:SCREEN 8FOR I=1 TO 15COLOR ICIRCLE (320,100), I*10NEXT IEND 程序三:S$ = "CDEFGAB"PLAY "L16"FOR I = 0 TO 6PLAY "O" + STR$(I%)PLAY "X" + VARPTR$(S$)NEXT IEND
(三)WPS表格的
WPS表格中,可以直接进行科学计算,绘图和构造数据库而无需编程。但是,直接操作往往既费事又容易失误。可以先把那些操作准备好,在需要的时候让它们自动执行,这就是所谓的命令宏是一系列命令组合而成的单一命令,它相当于程序。宏的作用在于减少操作时间或避免误操作,以实现操作过程自动化(也有一些工作不能用动作来实现,可以归结为函数宏)。编辑wps 表格宏的工具是VBA6.0Visual Basic for Applications)。VBA易懂易记。宏可以用"录制""手工编写"等办法生成(wps暂时不能录制宏)
:victory:
VBA For ET 教材连载系列】三
贡献者:罗刚君  日期:2009-05-03  阅读:415 
相关标签:pub2007  >  二次开发  >  VBA
认识VBE
ET VBA是一种附属于ET的程序语言,而VBE则是开发程序的环境。VBE是软件,VBE是容器。
本节将带您认识VBE的环境,包括不同窗口及其作用。
VBE界面中有很多很多种窗口,各有自己独特作用。本节将介绍窗口的分布及其作用。
3.1 进入VBE的方式
ET2009装好VBA后,可以通过两种方式打开VBE界面:
1.1 快捷键法:【Alt+F11
如果再次按下【Alt+F11】则可以关闭VBE窗口返回ET工作表
1.2 菜单法:单击菜单【工具】\【宏】\VB编辑器】即可
3.2 认识VBE组件
VBE中有很多窗口及其它组件,对每个组件都需要有一定的认识并能合理的设置,才能在编写代码时得心应手。
VBE中组件主要包括:
*菜单
*工具栏
*工程资源管理器
*代码窗口
*属性窗口
*工作表代码窗口
*模块代码窗口
*窗体
*窗体代码窗口
*对象浏览器
*立即窗口
VBE中的所有组件无法同时出现,某些组件与组件之间是排斥关系。如组件A出现,那么组件B就会关闭或者隐藏,反之亦然。在图3.1中罗列了大部分组件。
3.1 VBE

3.2.1 菜单
VBE中的菜单栏包含了VBE中大部分功能。单击二级、三级菜单可以执行文件导出、导入、查、删除、新建组件、设置格式、定义选项、加密码、代码调试、窗口切换、调用帮助等
等功能。
另外还有一种快捷菜单,即右键菜单。右键在不同地方将产生不同菜单,例如代码窗口和在窗体上,在立即窗口所产生的右键菜单就大大不同。即使同在代码窗口,在不同的状态下,仍然会有不同的菜单,例如正常状态和中断状态下,代码窗口的右键菜单也不一样的。
3.2.2工具栏
工具栏包含的功能在菜单中都有,不过工具栏的按钮在操作上比菜单栏方便、直观,所以工具栏在工作中使用率会高于菜单栏。
工具栏同样可以定制,创建或者删除工具栏都可以,在本书第28章将会讲述。
工具栏中的按钮可以通过功能提示来查看名称及了解功能。只要将鼠标指针移向任何一个按钮,屏幕上将出现它的名称。图3.2即为复制按钮的功能提示。
3.2工具栏提示


工具栏包括四个工具条组成,如果某组件未显示,可以在工具栏或者菜单栏中单击右键,在需要显示的工具栏名称上单击使其打勾即可。图3.3中单击菜单【编辑】即可显示编辑工具栏。
3.3显示编辑栏

3.2.3工程资源管理器
工程资源管理器用于显示VBA中的所有工程。当前打开多少个Et工作簿就有多少个工程。显示工程资源管理器的快捷键是【Ctrl+R】。
工程资源理器是一个非常重要的组件,每次编写代码都需要通过它来管理,用户需要对它的功能与启动模式有深入地理解。图3.4是工程资源管理器的外观。
3.4工程资源管理器
3.2.4 代码窗口
代码窗口包括包括工作表代码窗口、模块代码窗口、窗体代码窗口等等,快捷键【F7】。图3.5是一个模块代码窗口,图3.6是一个工作表代码窗口。它们虽然都存放VBA代码,但作用上却大大不同,在以后的VBA事件章节将会详述。
3.5模块代码窗口3.6工作表代码窗口

3.2.5 属性窗口
属性窗口用于设置窗体及窗体组件的属性,在设置用户窗体时,会频繁的使用属性窗口。属性窗口的显示快捷键为【F4】,观观大致如图6.7所示。
3.7属性窗口

3.2.6 用户窗体
用户窗体主要用于开发带有界专业程序时用,当然更多时候用户拿它来设计帮助界面及做登录框。
3.8即为笔者设计的简易登录框。
3.8简易登录框

生成一个新窗体的步骤是:单击菜单【插入】\【窗体】。
3.2.7 对象浏览器
对象浏览器用于查看ET对象库以及过工程中的可用、属性、方法、事件及常数变量。您可以用它来搜索及使用既有的对象,或是来源于其他应用程序的对象
打开对象浏览器的快捷键【F2】。
3.9即为对象浏览器的外观。
3.9对象浏览空器

3.2.8 立即窗口
3.10即为立即窗口,调出立即窗口的快捷键是【Ctrl+G】。
3.10立即窗口

3.3 不同窗口的作用
3.3.1 工作表代码窗口
工作表代码窗口用于存工作表事件代码。在窗口中的代码对当前工作表生效。
例如以下代码,进入工作表sheet1时报告当前工作簿的工作表数量。
从工程资源管理空对空双击Sheet1打开工作表代码窗口,将代码写入:
————————————————————————————————————————
Private Sub Worksheet_Activate()
MsgBox "当前工作簿工作表个数:" & Sheets.Count
End Sub
————————————————————————————————————————
当用户从工作表Sheet2切换到Sheet1时,将报告工作表数量,且只有在进入工作表Sheet1时能有可能产生提示。见图3.11所示。