自动化初探:用 Excel 宏干掉重复的周报工作

凌晨三点半,酒店房间的空调发出低沉的嗡鸣。屏幕上是密密麻麻的周报数据,客户来源、关键词排名、转化漏斗……每周都要从十几个后台导出,再手动粘贴到同一个Excel里。这活儿干了快两年,每次都要耗掉我大半个周日晚上。

32岁了,还在干这种体力活。心里那股烦躁劲儿压不住。

其实早就知道有“宏”这么个东西。以前总觉得那是IT部门或者“正经程序员”才碰的,我一个搞流量、弄爬虫的,用不上。但今晚看着那堆等着我复制粘贴的表格,突然就较上劲了。凭什么我要把生命浪费在这种毫无意义的重复劳动上?偷懒才是第一生产力,这话谁说的来着,真他妈对。

打开录制宏的按钮,手有点生。第一次录,光是把数据从第一个后台导出的CSV文件导入Excel,就录了十几步。回放的时候傻眼了,它只会机械地重复我点过的位置,换个文件,光标对不上就全乱套。这才明白,录制宏只是记录动作,不是记录逻辑。

得写VBA。

这对我来说是个挺奇妙的转折点。我的代码经验全在Python爬虫上,为了绕过反爬机制,跟各种验证码、动态加载、IP封锁斗智斗勇。那是和网站后端的攻防战,讲究的是隐蔽、效率和破解。而VBA……它就在Excel这个方方正正的界面里,操作的是单元格、工作表这些规规矩矩的对象。感觉像从一个在野外求生、制作陷阱的猎人,突然被关进了办公室,要求你按照规章流程操作复印机。

但底层逻辑是通的。循环、判断、变量。我开始翻论坛,找那些现成的代码片段。最核心的需求就两个:一是遍历指定文件夹里所有的CSV文件,二是把每个文件里特定列的数据,追加到总表的那一列下面。

For Each file In folder.Files
If Right(file.Name, 4) = “.csv” Then
Workbooks.Open Filename:=file.Path
‘这里把数据拷贝出来
ActiveWorkbook.Close SaveChanges:=False
End If
Next file

看起来简单的几行,调试了快两个小时。路径问题,文件打开方式,数据拷贝时目标位置的动态定位……每解决一个报错,心里那点“自己好像也能搞定”的虚荣心就膨胀一点。但更深层的感觉是恐惧。我发现自己对Windows系统的文件对象、对Excel应用本身的对象模型,一无所知。我的爬虫技能像一把锋利的匕首,但此刻需要的是螺丝刀,而我手里没有。

窗外的天有点泛灰了,不是天亮,是城市永远不彻底暗下去的那种底光。胃有点抽着疼,才想起晚上就啃了个面包。

代码终于跑通了。看着程序自动打开一个个文件,数据像流水一样汇入总表对应的列里,最后自动生成了图表。整个过程不到三分钟,而以前我需要手动折腾四十多分钟。那种感觉……不是兴奋,是一种巨大的空虚和荒谬感。我过去两年的无数个周日晚上,原来就值这么几十行代码。

保存这个带宏的工作簿时,我给它起名叫“周报机器人.xlsm”。心里清楚,这玩意儿简陋、脆弱,换个文件格式可能就崩。但它确实工作了。

关掉电脑躺下,脑子里却停不下来。这个自动化的“小技巧”,真的只是为了偷懒吗?我花几个小时去学去调试,省下的不过是每周四十分钟。从投入产出比看,蠢透了。但那种“让机器代替重复劳动”的念头,一旦种下,就挠得人心痒。我的爬虫,本质上不也是自动化获取信息吗?那获取之后的分析、整理、报告,为什么不能也自动化起来?

好像摸到了一点什么,又说不清。只是觉得,眼前这些繁琐的、消耗心力的“过程”,或许都可以被拆解、被固化、然后……被抛弃。

雨开始敲打窗户了,淅淅沥沥的。明天,不,是今天,还有一堆关键词要调整。睡吧。

© 版权声明
THE END
喜欢就支持一下吧
点赞117 分享