【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-8篇VBA相关文章。期望通过这个论坛的平台,让用户了解VBA,也更好地借助国产软件WPS完成工作……
专贴形式说明:论坛VBA专栏贴子与纸质出版物在形式上会有所区别,无法像正规出版物一样要求每页之间的承接性和连惯性。但仍然遵循一个基本的常识:先理论后案例,先基础后进阶。
本连载教材计划前期用五到六篇讲述VBE环境的设置,以及VBA常见语句的语法。而后续则以案例配套案例解说形式发贴,力图让用户通过案例了解VBA的用法与语法;而最后再开发一个专业型的插件做为结束篇。
基于以上事实,推广VBA相对于制表业来说具有极其重要的意义。
转换另一个视角,WPS是国内最大的办公Office软件开发公司,其产品WPS套件支持VBA的开发语言。但因WPS缺乏应有的VBA帮助文件及教材,一直以来未得以推广,甚至连WPS用户的部分中坚分子也完全不了解VBA,甚至对其持抵制态度。
为了让WPS得到更多的认同感,也为了制表用户可以提升办公效率及数据运算的准确度,本月开始,WPS论坛每月提供6-8篇VBA相关文章。期望通过这个论坛的平台,让用户了解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.认识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代码的工作簿时,完全禁止禁止宏程序的运行,而受信任位置例外。但目前ET的VBA方面有待完善,暂时未提供“受信任位置”供选用。如果需在开发在“非常高”的安
在默认状态下,ET2009都是禁用宏的,以确保用户不会因潜在的宏病毒而受破坏。但是同时也带来另一个问题——正常的VBA程序无法执行。所以通常有三种做法:
不用VBA的用户,彻底禁用宏,杜绝宏病毒蔓延;
常用VBA程序,包括自己开发的和别人开发的程序的用户,可以将宏的安全性稍加提高,即遇到宏时提示用户,当用户确定代码安全时再执行。
第三类自编自用型用户或者完全信任宏代码开发者的用户,则可以将宏的默认设置修改为无限制。即允许任何宏执行,从而提升工作的效率。笔者属于第三类,永远允许所有宏自动执行。
2.3.设置安全性对话框
单击菜单【工具】\【宏】\【安全性】,可以看到一个“安全性”对话框,在该对话框中可实现安全性级别的调整。
●非常高
指打开带的VBA代码的工作簿时,完全禁止禁止宏程序的运行,而受信任位置例外。但目前ET的VBA方面有待完善,暂时未提供“受信任位置”供选用。如果需在开发在“非常高”的安
全性设置下仍然可以执行的VBA程序,只能借助第三方软件来实现,例如VB开发Com加载宏。
●高
允许执行经过签署的宏,其它宏则禁止执行。这需要使用到数字签名功能。
●中
表示开启带有宏代码的工作簿时,弹出提示,警告用户工作簿含有可以具有病毒的宏代码。如果用户确认安全则执行,否则可以禁止代码执行。
●低
在这种设置下可以执行任何VBA程序,高效却不安全。学习VBA时,读者应尽量选择“低”,以使学习进度更快。笔者数年来也将安全性设置为低。
●高
允许执行经过签署的宏,其它宏则禁止执行。这需要使用到数字签名功能。
●中
表示开启带有宏代码的工作簿时,弹出提示,警告用户工作簿含有可以具有病毒的宏代码。如果用户确认安全则执行,否则可以禁止代码执行。
●低
在这种设置下可以执行任何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)”表示单元格,则无法产生提示信息;
(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键即可完成代码的录入。
(5)如果需要录入设置状态栏,但不确定用什么方法表示状态,也可以借用这个快速信息获取有限的帮助。在代码窗口中录入“Application.”后VBA会提示Application对象的所有方法和属性,而状态栏属性的代码“StatusBar”自然也在其中,当录入“St”后程序会自动定位于代码“StatusBar”上,使用Tab键即可完成代码的录入。
图2.4 获取Application的快速信息statusbar是什么意思
综述:
ET 2009的VBA可以为工作带来效率的提升,也可能带来安全隐患。用户需要使用过程
中根据需要设置安全性。
ET未提供足够的帮助文档,但可以借助有限的提示信息快速而准确地录入不确定的VBA语句。
在后面两节中将带你认识VBE环境及认识VBA的过程。
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.0(Visual Basic for Applications)。VBA易懂易记。宏可以用"录制"和"手工编写"等办法生成(wps暂时不能录制宏)。
(三)WPS表格的“宏”
在WPS表格中,可以直接进行科学计算,绘图和构造数据库而无需编程。但是,“直接操作”往往既费事又容易失误。可以先把那些“操作”准备好,在需要的时候让它们自动执行,这就是所谓的“命令宏”。“宏”是一系列命令组合而成的单一命令,它相当于程序。宏的作用在于减少操作时间或避免误操作,以实现操作过程自动化(也有一些工作不能用“动作”来实现,可以归结为“函数宏”)。编辑wps 表格宏的工具是VBA6.0(Visual Basic for Applications)。VBA易懂易记。宏可以用"录制"和"手工编写"等办法生成(wps暂时不能录制宏)。
:victory:
【VBA For ET 教材连载系列】三
【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的环境,包括不同窗口及其作用。
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中罗列了大部分组件。
*代码窗口
*属性窗口
*工作表代码窗口
*模块代码窗口
*窗体
*窗体代码窗口
*对象浏览器
*立即窗口
VBE中的所有组件无法同时出现,某些组件与组件之间是排斥关系。如组件A出现,那么组件B就会关闭或者隐藏,反之亦然。在图3.1中罗列了大部分组件。
图3.1 VBE组件
3.2.1 菜单
VBE中的菜单栏包含了VBE中大部分功能。单击二级、三级菜单可以执行文件导出、导入、查、删除、新建组件、设置格式、定义选项、加密码、代码调试、窗口切换、调用帮助等
等功能。
另外还有一种快捷菜单,即右键菜单。右键在不同地方将产生不同菜单,例如代码窗口和在窗体上,在立即窗口所产生的右键菜单就大大不同。即使同在代码窗口,在不同的状态下,仍然会有不同的菜单,例如正常状态和中断状态下,代码窗口的右键菜单也不一样的。
3.2.2工具栏
工具栏包含的功能在菜单中都有,不过工具栏的按钮在操作上比菜单栏方便、直观,所以工具栏在工作中使用率会高于菜单栏。
工具栏同样可以定制,创建或者删除工具栏都可以,在本书第28章将会讲述。
工具栏中的按钮可以通过功能提示来查看名称及了解功能。只要将鼠标指针移向任何一个按钮,屏幕上将出现它的名称。图3.2即为“复制”按钮的功能提示。
另外还有一种快捷菜单,即右键菜单。右键在不同地方将产生不同菜单,例如代码窗口和在窗体上,在立即窗口所产生的右键菜单就大大不同。即使同在代码窗口,在不同的状态下,仍然会有不同的菜单,例如正常状态和中断状态下,代码窗口的右键菜单也不一样的。
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事件章节将会详述。
代码窗口包括包括工作表代码窗口、模块代码窗口、窗体代码窗口等等,快捷键【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所示。
MsgBox "当前工作簿工作表个数:" & Sheets.Count
End Sub
————————————————————————————————————————
当用户从工作表“Sheet2”切换到“Sheet1”时,将报告工作表数量,且只有在进入工作表“Sheet1”时能有可能产生提示。见图3.11所示。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论