vba获取html代码数据,VBA获取网页表格数据

这段VBA代码演示了如何利用Excel宏从中国地震网获取地震信息。通过InternetExplorer对象,它导航到指定URL,定位到第五个表格,并将数据填充到Excel工作表中,实现了自动化数据抓取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

'获取中国地震网的地震信息

Option Explicit

'http://data.earthquake.cn/datashare/globeEarthquake_csn.html

Sub WebInquire()

Dim Url As String

Dim TableNumber As Integer

Dim Sht As Worksheet

Dim Rng As Range

'指定所需网页地址

Url = ""

'指定网页上的表格编号,自已在网页源里测试

'表格是从0开始,一般人工观察获取所需值

TableNumber = 5

'设置要显示网页内容的目标位置

Set Sht = ThisWorkbook.Worksheets(1)

Set Rng = Sht.Range("A1")

Sht.Cells.ClearContents

Call getTableInfor(Url, TableNumber, Rng)

End Sub

'获取网格程序

Sub getTableInfor(Optional Url As String, Optional TableNumber As Integer, Optional Rng As Range)

Dim IE As Object

Dim DocX, TableX, Row, TdGroup

Dim i%, j%

'定义为IE

Set IE = CreateObject("InternetExplorer.Application")

With IE

'调试时可设为显示

.Visible = True

.navigate Url

Do Until .readyState = 4

DoEvents

Loop

End With

'定义数据所在表格号码

Set TableX = IE.document.getElementsByTagName("table")(TableNumber)

'遍历此表的所有行,TD标签.

'在此说明一下TABLE相关属性,ROWS是行数,COLS是列数

'网页集合的计数是从0开始

For i = 0 To TableX.Rows.Length - 1

Set Row = TableX.Rows(i)

'遍历每行所有表格

For j = 0 To Row.Cells.Length - 1

'显示内容,注意在EXCEL里RANGE集合取表格位是从1开始,所以要加1

Rng.Cells(i + 1, j + 1) = Row.Cells(j).innerText

Next

Next

IE.Quit

End Sub

'/转码

Function BinToStr(arrBin, strChrs)

With CreateObject("ADODB.Stream")

.Type = 2

.Open

.Writetext arrBin

.Position = 0

.Charset = strChrs

.Position = 2

BinToStr = .Readtext

.Close

End With

End Function

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值