如何使用Excel VBA Macro批量抓取网页截图并按要求保存
Excel VBA 批量网页截图实现方案
前置配置
- 先整理Excel表格结构:
- A列(A1为表头「网页地址」,数据从A2开始):存放1045条目标网址
- B列(B1为表头「保存文件名」,数据从B2开始):存放对应截图的命名(无需加扩展名,默认生成png格式)
- 提前在本地创建截图存储目录,例如
C:\批量网页截图结果,记录好完整路径
- 环境依赖准备:
- 安装Selenium Basic(VBA专用的网页自动化测试库)
- 安装你常用浏览器(Chrome/Edge)对应版本的WebDriver,并将WebDriver所在路径加入系统环境变量
- 打开VBA编辑器(快捷键
Alt+F11),依次点击「工具」-「引用」,勾选「Selenium Type Library」后确认
实现代码
Sub 批量网页截图() Dim driver As New Selenium.ChromeDriver ' 若使用Edge浏览器请替换为Selenium.EdgeDriver Dim savePath As String Dim lastRow As Long Dim i As Long ' 此处替换为你自己的截图保存文件夹路径,末尾必须加反斜杠 savePath = "C:\批量网页截图结果\" ' 自动获取当前工作表的最大数据行号 lastRow = ThisWorkbook.ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row ' 启动浏览器 driver.Start ' 循环处理每一条网址 For i = 2 To lastRow On Error Resume Next ' 遇到错误跳过当前网址,继续执行后续任务 Dim url As String Dim fileName As String url = ThisWorkbook.ActiveSheet.Cells(i, "A").Value fileName = ThisWorkbook.ActiveSheet.Cells(i, "B").Value ' 校验网址和文件名不为空再执行操作 If url <> "" And fileName <> "" Then ' 打开目标网页 driver.Get url ' 等待页面加载,单位为毫秒,可根据网页加载速度自行调整 driver.Wait 3000 ' 执行截图并保存 driver.TakeScreenshot.SaveAs savePath & fileName & ".png" ' 将执行结果写入C列 If Err.Number = 0 Then ThisWorkbook.ActiveSheet.Cells(i, "C").Value = "截图成功" Else ThisWorkbook.ActiveSheet.Cells(i, "C").Value = "截图失败:" & Err.Description Err.Clear End If End If On Error GoTo 0 Next i ' 关闭浏览器释放资源 driver.Quit Set driver = Nothing MsgBox "批量截图任务执行完成!" End Sub
注意事项
- 全量运行前先测试2-3条数据,确认路径配置、文件名、截图效果符合要求后再运行全部1045条数据
- 可以根据网页实际加载速度调整
driver.Wait后的等待时长,动态内容较多的网页建议延长等待时间,或者添加显式等待逻辑判断目标元素加载完成后再截图 - 如果需要整页截图,可以在打开网页后添加代码调整浏览器窗口高度匹配页面总高度再执行截图
- 执行过程中不要手动操作打开的自动化浏览器窗口,避免截图失败
内容的提问来源于stack exchange,提问作者Ale Pradana Putra
相关产品推荐
相关产品推荐

