excel自动抓取网页数据(Excel表哥知乎账号Excel到底有多强大,一个逆天的应用场景分享)
优采云 发布时间: 2021-10-11 17:02excel自动抓取网页数据(Excel表哥知乎账号Excel到底有多强大,一个逆天的应用场景分享)
点击关注Excel表哥知乎账号
Excel到底有多强大,一起逆天分享一个应用场景!
您在日常工作和生活中可能有这样的需求,需要在网上的Excel中批量填写内容。
当然,如果只有少量数据,手动填写可能不会太麻烦。
但如果我们在日常工作中需要在网上批量填写表格,可想而知,这将是一件费时费力又无聊的事情,即使是手工操作,一不小心也极易出错。
这是我百度的自动填表工具的网页:
可见大家对于自动填表工具的需求是巨大的!
下面的例子是我表弟用Excel制作的一个自动填表工具。
今天的分享可以告诉你Excel软件有多强大!!!
01 | 自动填充网表的演示
这是我表弟用Excel为读者朋友制作的自动填表工具。
当用户在Excel中填写完详细信息后,只需要点击一个按钮即可实现web表单自动填写的功能!
▲点击图片查看完整*敏*感*词*演示
看完上面的demo,相信你可能对Excel办公自动化有点感触。
不知道这个一键操作能不能降低复杂度,提高效率?
02 | 实现原理介绍
如果要实现上面*敏*感*词*演示的一键自动填表的优采云操作,其实很麻烦!
是的,大家猜对了,主要是通过VBA编程!
这是实现此一键操作的代码的一部分:
大约有不到 1,000 行代码。当然,这些代码不仅实现了自动填写网表的功能,还实现了一些其他的辅助功能,如表格的美化、自动记录等。
全部代码完成后,只需要实现如下一键操作:
代码虽然长,但是可以一劳永逸!
这正是Excel办公自动化的魅力所在!
当然,我们不可能向你介绍如何编写VBA代码,但我想实现这种类似功能的想法值得一书。
其实,要学习甚至熟练使用Excel来操作浏览器(这里指的是微软的IE浏览器),需要掌握以下技巧:
说起来简单,但实际操作又是另外一回事。
幸运的是,VBA 是一种非常古老的编程语言。网上有很多使用Excel+VBA对网页进行操作的代码示例,可以搜索到。
比如我在知乎上检索到的相关介绍:
顺便给大家介绍一下Excel表哥知乎的同名专栏。欢迎有兴趣的读者朋友关注和互动!
▲欢迎关注我表姐的知乎账号,谢谢支持!
03 | 附录核心代码
首先需要在VBE编辑器、工具选项中检查并引用以下两个IE库:
检查以分别引用 Microsoft HTML Object Library 和 Microsoft Internet Controls 库。
以下是通过Excel VBA操作IE浏览器的部分核心代码:
Sub webfill()
Dim mShellwindows As New ShellWindows
Dim objIE As InternetExplorer
url = "http://www......" '需要填表的网页连接
Set objIE = CreateObject("InternetExplorer.Application") 'IE(InternetExplorer)对象生成'IE(InternetExplorer)显示
Do While objIE.Busy = True Or objIE.readyState 4
DoEvents
Loop
With objIE.document '在文本框填写内容
.getElementById("FormControl_V1_I1_S2_I2").Click '"FormControl_V1_I1_S2_I2" IE 表单控件的ID,下同
'填写Excel内容至网页
.all("FormControl_V1_I1_S4_I4_CB6_textBox").Focus
.all("FormControl_V1_I1_S4_I4_CB6_textBox").Value = Sheet1.Cells(5, "B") '填写内容
.all("FormControl_V1_I1_S4_I4_CB6_textBox").FireEvent ("onchange")
.all("FormControl_V1_I1_S4_I4_CB6_textBox").Click
'......
.getElementById(inx_item).Focus
.getElementById(inx_item).Value = Sheet1.Cells(5, "C") '填写内容
.getElementById(inx_item).FireEvent ("onchange")
'获取网页内容至Excel
.getElementById("FormControl_V1_I1_S3_I3_T1").Focus
Sheet1.Cells(1, 1) = .getElementById("FormControl_V1_I1_S3_I3_T1").Value
End With
'此处省略其他一些常规Excel操作
Set ObjIE= Nothing
End Sub
限于篇幅,以上代码只是部分关键处理思路的示例。如果具体到某个应用场景,实际的代码实现需要根据自己的网页进行调整,但大体思路是完整的。
有兴趣的读者朋友可以在网上搜索相关技术,也欢迎与Excel表弟互动。
今天的分享结束,现在大家都知道Excel的强大了!
过去推荐
▎Excel 待办事项列表模板 V2.0
▎Cousin的项目管理模板已经更新到V4.0