也网上玩了很久了,一直是学习或者查看大佬们的编辑程序或者的编辑方法,今天自己动手来实现自己的自力更生,解决自己在生活或者工作中遇到的问题,借助网络和AI实现自己的需要的VB程序。
下面是整个过程,记录下来,便于后期查看,也为学习做好笔记。
一、程序需求:
告诉AI我的需求情况:“帮我编制一个excel的VB程序,要求:VBA操作网页读取指定的文字,统计的相关数据自动填入EXCEL表中”发给AI,让她帮我实现程序的比较和修改。
二、整个人机交流过程:
☆ 第一次交流:
当然可以!下面帮你设计一个简单的Excel VBA宏,能够:
- 打开一个网页
- 读取指定的网页内容(比如指定标签里的文字)
- 把统计结果自动写入Excel表格
基础说明
- VBA操作网页主要通过
InternetExplorer
对象(IE控件),但注意现代IE已不推荐,很多新网站或win10以上系统可能用不了,有时可以考虑MSXML2.XMLHTTP
(只获取源码,不执行JS)。 - 本例用IE控件方法示范,可改为XMLHTTP方式。
- 假设你需要统计某网页内所有
<span class="target">xxx</span>
标签的文字出现次数。
步骤一:添加引用
在VBA编辑器中,点击【工具】-【引用】,勾选:
- Microsoft Internet Controls
- Microsoft HTML Object Library
步骤二:VBA示例代码
Sub 网页内容统计并写入表格()
Dim IE As Object
Dim HTMLDoc As Object
Dim Element As Object
Dim url As String
Dim keyword As String
Dim count As Integer
Dim rowNum As Integer
url = "https://你的目标网页.com" '请换成目标网页地址
keyword = "你要查找的文字" '请换成要查找的内容
count = 0
rowNum = 2 ' Excel从第2行开始写入,默认第1行为表头
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
IE.navigate url
Do While IE.Busy Or IE.readyState <> 4
DoEvents
Loop
Set HTMLDoc = IE.document
'----- 假设寻找所有<span class="target">标签,并读取其.innerText -----
For Each Element In HTMLDoc.getElementsByTagName("span")
If Element.className = "target" Then
' 如果内容包含关键字
If InStr(Element.innerText, keyword) > 0 Then
count = count + 1
' 写入Excel
ThisWorkbook.Sheets(1).Cells(rowNum, 1).Value = Element.innerText
rowNum = rowNum + 1
End If
End If
Next
' 在A1写入表头
ThisWorkbook.Sheets(1).Cells(1, 1).Value = "包含关键字的文字"
ThisWorkbook.Sheets(1).Cells(1, 2).Value = "总次数"
ThisWorkbook.Sheets(1).Cells(2, 2).Value = count
IE.Quit
Set IE = Nothing
Set HTMLDoc = Nothing
MsgBox "统计完毕,数据已填入!", vbInformation
End Sub
使用方法
- 打开Excel,按
Alt+F11
进VBA编辑界面。 - 插入一个新模块,把上面代码粘贴进去。
- 修改
url
和keyword
变量为你的实际需求。 - 关闭VBA窗口回Excel,按
Alt+F8
运行此宏。