Excel开发生态中“无法撼动的蟑螂”,从XLM到VBA,再活500年!

简介: Excel开发生态中“无法撼动的蟑螂”,从XLM到VBA,再活500年!

戏说 Excel 系列(二)蟑螂传奇

原创文/寒树Office 图/寒树Office

image.png

蟑螂传奇

引文:VBA 是 Excel突出重围,打败对手的大杀器,Excel 取得巨大成功的重要原因。Excel 从 1993年就开始支持 VBA,拥有 25 年的支持生命周期,VBA 就是 Office 开发生态系统中的“无法撼动的蟑螂”。蟑螂是成功的,因为它们很简单。

VBA的起源

image.png

Lotus 1-2-3,首次出现宏功能

Lotus 1-2-3 是最早具备一定开发能力的“电子表格”,其最辉煌的成就不是多功能的集成,而是其推出的“宏”功能。最初“宏”只作为产品的调试和测试机制,后来开发人员才意识到“宏”的价值,在最终版本中添加了“宏”功能。“宏”为非程序员编程及表格自动化提供了简便有效的帮助,帮助 Lotus 1-2-3 成为“电子表格”市场的领军产品。

Excel4.0,开始引入XML宏

XML 宏只能在“宏表工作表”中编写代码,代码保存在后缀为 .xlm 的单独文件中,因此被称为 XLM 宏。XLM 宏语言包括函数调用以及上百个内建函数,使用户可以通过编程控制 Excel的各种操作,因为如此吸引了一些具备很强编程能力的人创建复杂的程序,但是 XLM 宏语言的在使用上相当的复杂,因此远离了广大的群众用户。

Excel5.0,推出VBA通用宏

此次微软大胆引入 VBA 宏语言,VBA 继承了 VB 很大一部分编程方法。VBA 是一款功能强大的工具,它使Excel形成了独立的编程环境。使用 VBA 和宏,可以把手工步骤自动化,VBA 也允许创建窗体来获得用户输入的信息。作为 Office 通用的宏语言,VBA 比 XLM 更简单,更强大、更有效率。Excel 97发布之后 VBA 最终发展成为主流的宏语言。

XML宏“僵而不死”

XLM宏从Excel 4开始被引入,但是从Excel 5及更高版本开始被更强大易用的VBA所替代,从此不再有本质上的更新。

image.png

命令宏

它的功能一般都和菜单选项或其它Excel命令相同。和通常的Excel命令相似,命令宏的最显著特点是可以影响工作环境(工作表、工作区)。不管是格式化范围、打印工作表或建立通用菜单,都能用命令宏来做。

函数宏

它和内置的函数相似,他的显著特点是可以接受参数,并在运处后返回结果。设计比较好的函数宏对当前环境没有影响。

子程序宏

它是命令宏和函数宏的结合。它象函数宏那样能带参数返回结果,又像命令宏那样能影响工作环境。子程序宏经常被其它宏引用,主要目的是简化宏代码。

VBA宏“老兵永不死”

image.png

原则一:五分钟原则

VBA只做需要为Office生态而做的事,而不是更多。VBA做了它的创造者为其市场定位所做的事情:让使用者以较少的经验快速实现有限的功能。这绝不意味着开发复杂应用的重型功能。复杂的事情,比如处理线程,是不合适的。如果五分钟内无法解决一个特定功能,应该考虑一下其它种类开发技术。

原则二:最快学习原则

VBA成功的另一个关键是其有限的功能集,缩短了学习曲线。成为一名优秀的VBA程序员所花费的时间比成为一名优秀的C#程序员所需的时间要少得多,而这正是早期Office开发者的主要选择。如果是以自动化Office软件操作为目的,以快速上手Office操作为目标,VBA是最佳选择。

原则三:免写代码原则

最后Office提供了VBA宏录制(macro recorder)的支持,可以录制大多数重复性的工作,以最简单的方式并自动生成代码。宏录制是多数非程序员出身职场小白的最佳选择,VBA也成为了唯一选项。

VBA,无法撼动的蟑螂

image.png

VBA是Office取得巨大成功的重要原因之一,使用VBA可以完成很多事情,基于Excel的VBA小程序更是不计其数。Excel从1993年就开始支持VBA,拥有25年的支持生命周期,VBA就是Office开发生态系统中的“无法撼动的蟑螂”。蟑螂是成功的,因为它们很简单。VBA通过抽象底层Windows操作系统的复杂性来实现其目标。VBA 的语言入门门槛较低,而这些用户利用 VBA 解决的正式工作中关键问题。简单的事情很容易完成。因此,VBA 程序大多作为部门内部或个人使用的小工具。

TimeLine/史记.宏

image.png

  • 1983,电子表格首次引入宏功能
  • 1992,微软开始引入XML宏
  • 1993,伟大的VBA横空出世


相关文章
|
6月前
|
数据安全/隐私保护
杨老师课堂之Excel VBA 程序开发第七讲之自动筛选
杨老师课堂之Excel VBA 程序开发第七讲之自动筛选
46 1
|
6月前
|
数据安全/隐私保护
杨老师课堂之Excel VBA 程序开发第七讲表格数据高亮显示
杨老师课堂之Excel VBA 程序开发第七讲表格数据高亮显示
53 1
|
6月前
|
数据安全/隐私保护
杨老师课堂之Excel VBA 程序开发第六讲根据部门列创建工作表
杨老师课堂之Excel VBA 程序开发第六讲根据部门列创建工作表
43 0
|
6月前
|
数据安全/隐私保护
杨老师课堂之Excel VBA 程序开发第三讲创建日报表
杨老师课堂之Excel VBA 程序开发第三讲创建日报表
29 0
Excel中用宏VBA实现GBT 4761-2008 家庭关系代码转换
Excel中用宏VBA实现GBT 4761-2008 家庭关系代码转换
|
3月前
|
数据采集 数据库
在EXCEL中VBA编程检验身份证号码有效性
在EXCEL中VBA编程检验身份证号码有效性
|
4月前
|
开发工具 开发者
Excel 2016 VBA 提取单元格的中文字符
Excel 2016 VBA 提取单元格的中文字符
39 1
|
4月前
|
算法 数据挖掘 Java
日常工作中,Python+Pandas是否能代替Excel+VBA?
日常工作中,Python+Pandas是否能代替Excel+VBA?
Excel如何使用VBA操作引用其它工作簿中的单元格
Excel引用其它工作簿中的单元格的值及使用VBA操作
|
6月前
|
机器学习/深度学习 安全 关系型数据库
Excel VBA的分层对象集合及外部对象库
基于对象的Excel VBA的分层对象集合及外部对象库