The Unreasonable Effectiveness of Excel Macros

Matthias Endler

Excel 宏不可思议的有效性

原文由 Matthias Endler 发布,订阅该博客

我一直不太喜欢实习,一来那些有意思的公司都离我在巴伐利亚的小村子太远,二来我性格腼腆,根本不好意思去申请。

只有一次,我通过学校的项目申请了去爱尔兰的实习。工作由老师统一分配,结果我的朋友被分到了苹果,而我则去了一家中型 IT 分销商——就叫它 PcGo 吧。

从网站上看,这家公司似乎相当气派,但实际上它只是科克阴雨绵绵的工业区里一间偏僻、灰暗的仓库。刚到那里,我被介绍给了同事 Evgeny,他是负责组装台式电脑的主要——也是唯一的员工。在我看来,整个店就是他在撑着。他的英语说得很蹩脚,于是直接递给我一把电动螺丝刀和一盒螺丝,我就开干了。第一周我们一起组装了好多台电脑,玩得也很开心。有一天因为我错过了公交车,他开车送我回家。那是个雨天,他开车穿行在科克狭窄的街道上,我们有说有笑,突然听到砰的一声巨响。我往后视镜一看,才发现后视镜已经没了。原来他撞上了另一辆车,直接把后视镜给撞掉了。Evgeny 却毫不在意,用浓重的东欧口音说道:“之前已经撞掉三个后视镜了。”然后继续往前开。

到了第二周,老板来找我。显然,我已经完成了他们为我这次为期三周的实习预先安排的所有工作量。这也不奇怪,我本来就擅长组装和安装电脑。

为了不让我闲着,他们又给我安排了一项新任务。在后面那台老旧的 Windows 98 电脑上,他打开浏览器访问了 silverpages.ie,搜索了“computer”,过了一会儿,我们面前出现了一份长得看不到头的名单,上面全是与“计算机”沾点边的爱尔兰公司的信息。每条记录都包含那些常规字段:公司名称、地址、电话号码、网站(如果有的话)以及一串关键词。

老板说他们需要一份所有竞争对手的概览。他小心翼翼地从一条记录里选中一个字段,复制,然后粘贴到 Excel 表格中。剩下的字段也如法炮制。“就是这样!”他挤出一丝假笑说道。我们都心知肚明,这意味着接下来的两周我都得做这件枯燥至极的事。

他们竟然想让我靠手动复制粘贴,把整个网络数据库都抄下来,以此来打发我的时间。

我本可以把这当作一种羞辱,但我反而把它看成了一个挑战。

我注意到 silverpages.ie 上的页码可以通过一个 GET 参数来控制。

“我能写个程序来自动抓取吗?”老板明显愣住了。“呃……你想做什么都行,但不准安装任何额外的软件!”说完他就走了。

看看电脑上已装的程序,我基本没得选:要么是 Excel,要么是扫雷。我知道 Excel 的 Visual Basic 宏相当强大,但不确定能不能用它来爬取整个网站。

过了一会儿,我发现了一个能把网页直接下载到 Excel 表格里的功能(真是无比美妙的功能)。这个功能运行得非常完美,于是我需要做的就是录制一个宏,让它为每一页创建一个临时工作表,把所有重要字段复制到一张“总表”中,然后再删掉临时工作表。我录制了宏并查看了代码。剩下的时间,我都在研究如何在循环中修改 URL 并清理宏代码。随后我按下了“运行宏”按钮,便坐在那里等着。电脑全速运转起来。我最担心的是程序会崩溃,或者电脑会耗尽内存。在此期间我没敢在这台电脑上玩扫雷,所以大多时候都是在打桌球或和 Evgeny 聊天。

第二天早上我来到办公室时,程序已经跑完了。出乎我意料的是,它竟然把整个 SilverPages 都爬了下来,名单里有好几千条记录。我通过电子邮件把文档发给了老板,然后又回去玩扫雷了。

一小时后,三个穿西装的人站在了我身后。我只好又把那份名单给他们看了一遍。他们简直不敢相信这是我一个人完成的,于是我向他们演示了抓取数据的工具。在他们眼里,我仿佛拥有了某种超能力。

他们没再给我布置新任务就离开了,剩下两周时间我可以自由支配。于是我又为他们写了一个库存管理工具,同样可以通过 Excel 来管理。其实那只是一个做得非常漂亮的 Excel 表单,用来替代他们之前手动维护的电子表格。我花了暑假的两周时间把这个工具完成,因为他们说会为此付我报酬——当然,最后并没有付 :)。

经验教训

  • 永远不要低估 Excel 宏的力量。
  • 如果手头的工作很枯燥,不妨通过增加限制来让它变得更有挑战性。

本文章由 muse-spark-1.2-contributor 进行翻译

评论