当前位置:
AIGC文章详情

2026年用VBA抓网页数据:四类网页只有两类真能抓——新手5个坑、2个免费替代、1个能照抄的案例

源自42位全网作者

06:24

有没有过这样的工作:每周都得从某个网站搬一批数据回来——汇率、招标公告、供应商价目表——每次手工复制粘贴进Excel,再修格式、删空行。活儿不重,但极其磨人。想自动化,上网一搜,十有八九告诉你:学Python爬虫。

这种需求其实比想象中大得多。小红书上一篇教VBA抓网页表格的笔记,开头就戳中了这个痛点:我们有时候在网页中见到合适使用的数据,然而直接复制粘贴却容易出现位置错乱、数据丢失等问题。小红书这篇笔记的收藏量超过8000,评论区里全是具体业务:做船务的想按订舱编号反查船公司网站的ETA,做财务的想批量拆分台账。

但另一边也不缺反对声音。同一篇笔记下有人劝"用python吧,有点过时了",作者回复:确实,但是我公司电脑有限制~只能在Excel上使使劲。小红书看到这句回复,你就明白为什么这项人人喊"过时"的技术,2026年还在被反复讨论:不是它多强,而是很多办公电脑上能跑的只有Excel。知乎上"现在各种AI和Python这么方便,VBA还有必要学吗?"的问题里,也有人直言Python就能解决,不知道在这种环境下学VBA是不是还值得。知乎

先把结论说清楚:2026年,VBA抓取依然能用,但它只在一个非常明确的"舒适区"里好用。你的活儿落在哪个区间,30秒就能判断,往下看。

真正能在2026年跑通的抓取代码长什么样?下图是知乎上流传的一套VBA股票行情抓取工具的核心:没有IE、没有浏览器,用XMLHTTP直接发一个HTTP请求,拿回JSON再解析进表格。知乎

2026年用VBA抓网页数据:四类网页只有两类真能抓——新手5个坑、2个免费替代、1个能照抄的案例

一、先把"网页数据"分成四类

VBA能不能抓,不看你的Excel版本。Excel 2010及以上(含Microsoft 365)都内置VBA编辑器和XMLHTTP组件,Windows下不用装任何东西——版本从来不是问题,页面才是。把页面分成四类:

  1. 静态表格页:打开页面,数据就已经在HTML里——政府公开公告、行业协会的统计表、银行汇率表。VBA吃这一类毫无压力,是舒适区里最扎实的部分。

  2. 带隐藏JSON接口的页面:看起来是动态的,数据其实来自一个独立接口。按F12打开开发者工具,切到Network面板,刷新页面,看XHR请求,经常能发现一个干净的数据接口。找到它之后,VBA直接请求接口,比解析页面还稳。

  3. 纯JavaScript渲染的页面:一些电商价格页、单页应用看板。这一类的边界很明确:如果目标页面完全依赖JavaScript渲染,XMLHTTP只能拿到空壳HTML,需要Selenium等浏览器自动化方案,超出VBA原生能力的范围。知乎别硬上,这一类不在VBA的活里。

  4. 需要登录的页面:不是不能做,但要处理Cookie、会话过期甚至验证码,复杂度上一个台阶,不适合作为第一个任务。

判断方法很简单:F12打开开发者工具,用元素选择器(Ctrl+Shift+C)点你要的数据,看它在不在HTML里;再看Network面板有没有JSON接口。前两类沾上任何一类,VBA就能抓。

二、五个坑,动手前先核对

坑一:教程太老。很多百万播放的教程还在教你"用VBA控制IE"——IE已经在2022年被微软正式退役,InternetExplorer自动化那条路在新Windows上基本走不通。现在的主流做法是用XMLHTTP组件直接发HTTP请求,就是上图那种写法。挑教程,优先挑最近两年发布的。

坑二:Mac用户别尝试。macOS版Excel虽然支持VBA,但MSXML2组件依赖Windows COM架构,网页抓取功能仅限Windows环境。知乎这一条直接劝退一批人。

坑三:WPS用户先确认有没有宏环境。WPS个人版默认不带VBA运行库,代码跑不动时先怀疑环境,再怀疑代码。

坑四:403、429不是代码写错了。403多半是请求没表明浏览器身份——部分网站会拒绝没有浏览器标识的请求,不设User-Agent,有些站点会直接返回403。知乎429是请求太快触发限流,每次请求之间加2秒等待就能解决大部分问题。

坑五:做完必须存成.xlsm。那套行情教程的第一步就强调:新建一个Excel表格,格式是xlsx或者xls,然后另存为启用宏的工作簿,格式是xlsm。知乎.xlsx存不下宏,发给同事还可能被安全警告拦一下,那是另一个话题。

2026年用VBA抓网页数据:四类网页只有两类真能抓——新手5个坑、2个免费替代、1个能照抄的案例

三、能抓多少?记住一条量级线

VBA是单线程,一个一个抓。社区里通行的分界线是:如果采集量在500个URL以内、不需要并发,VBA完全够用;超过这个量级,Python的效率优势才明显体现。知乎对大多数"每周去一个页面拿几十条数据"的人来说,绰绰有余。

还有一个效率细节:数据超过500行写入表格时,用二维数组批量写,别逐格写——逐格写入耗时可能是数组写入的5-10倍。知乎

四、不会写代码,还有两个免费替代

说实话,需求简单的话,先试Excel里自带的两个免费功能,一行代码都不用写:

  • Power Query"从Web"(Excel 2016及以上/Microsoft 365):粘贴网址,它自动识别页面里的表格,还能设置定时刷新。"固定网页表格进报表"这个场景它就是量身定做的,能用它优先用它。

  • WEBSERVICE函数(Microsoft 365/2021,仅Windows):数据源本身就是返回文本/JSON的接口时,单元格里直接调用。看股票行情的话,365还有STOCKHISTORY。

这两个搞不定、页面又落在前两类,才轮到VBA。而且VBA也不用自己从头写:把页面结构和需求描述给AI,让它生成XMLHTTP写法的代码,跑之前验收三件事——状态码是否返回200、数据行数是否符合预期、抽查几条和页面是否一致。三条都过,基本就能上岗。

五、谁完全不用碰VBA抓取

  • 要大规模抓(成百上千页)、每天高频抓、目标全是JS渲染页的:直接上Python或买现成数据服务,VBA不是那个工具;

  • 数据在公司内部系统而不是公开网页的:那是数据库和RPA的问题,不是抓取问题;

  • 只需要做一次的:手工做,不自动化才是最便宜的。

六、一个知乎上正在跑的真案例,可以直接照做

最后给一个我在知乎找到的完整案例。起因很小:最近有个朋友用Excel做数据,其中涉及到了股票的最新价格,但是股票价格是实时变化的,每次上交易软件查看然后手动更新到Excel很麻烦。知乎成品是一个自定义函数:单元格里填股票代码,返回最新行情。整条路线很标准,适合第一次练手:

第一步:新建表格,另存为启用宏的工作簿(.xlsm)。

第二步:按Alt+F11,打开VBA编辑器:

2026年用VBA抓网页数据:四类网页只有两类真能抓——新手5个坑、2个免费替代、1个能照抄的案例

第三步:在编辑器菜单点"插入"选"模块",把XMLHTTP请求代码粘贴进模块(请求行情接口、解析JSON),保存后关掉编辑器:

2026年用VBA抓网页数据:四类网页只有两类真能抓——新手5个坑、2个免费替代、1个能照抄的案例

用法:在任意单元格写类似=StockPrice(“股票代码”)的自定义函数,就能拿回最新价;如果想刷新数据,按快捷键F9即可。知乎两点提醒:数据来自东方财富,频繁访问会被限制,盯十几只股票没问题,别贪多;作者电脑装的是WPS,Office的操作步骤一样。

值得继续盯的信号

最后说两个值得跟踪的动向。一是8月以来,B站上出现了多条"AI全自动写VBA"的工具演示,语音编程助手实现全自动VBA编程,连顶部功能区菜单都能AI自动生成。哔哩哔哩这条路线如果成熟,今天讨论的入门门槛还会再降一截。二是微软已经宣布Excel的COPILOT()函数9月14日停用——AI函数来了又走,33岁的VBA还在跑。选工具别只看新不新,看它三年后还能不能在你的办公电脑上干活。

内容由AI生成
0
扫一下,分享更方便,购买更轻松
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

最新文章 热门文章