ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > 运用VBA提取网页数据的一个实例

运用VBA提取网页数据的一个实例

作者:绿色风 分类: 时间:2022-08-18 浏览:110
楼主
0Mouse
Q:如何运用VBA提取以下网页的基金信息到Excel工作表中呢?
  1. http://www.chinastock.com.cn/fund/fundscreening/index.shtml
A:代码如下:
  1. Sub 运用VBA提取网页的基金信息到Excel工作表中()
  2.     Dim IE As Object, srg$, arr, Ar, brr, i%, j%, sr$, Rst(1 To 10000, 1 To 13)
  3.     Set IE = CreateObject("Microsoft.XMLHTTP")
  4.     With IE
  5.         .Open "get", "http://www.chinastock.com.cn/fund/fundscreening/index.shtml", False
  6.         .send
  7.         srg = .responsetext
  8.     End With
  9.     Cells.Clear
  10.    
  11.     '提取标题行文字
  12.     arr = Replace(Split(Split(srg, "<THEAD>")(1), "</THEAD>")(0), "<br>", vbCrLf) '先后以<THEAD>和</THEAD>为拆分字符提取.responsetext中二者之间的内容,并将<br>替换成vbCrLf
  13.     For i = 1 To 13
  14.         Ar = Split(Replace(Split(arr, "</td>")(i + 2), "</span>", ""), ">")
  15.         Rst(1, i) = Ar(UBound(Ar))
  16.         Erase Ar
  17.     Next
  18.    
  19.     '提取标题行以下内容
  20.     brr = Split(srg, "jsp?symbol=")    '以jsp?symbol=为拆分字符将.responsetext拆分成一个一维数组
  21.     For i = 2 To UBound(brr) Step 2
  22.         '提取基金代码
  23.         Rst(i / 2 + 1, 1) = "'" & Split(brr(i), """")(0)
  24.         '提取基金简称
  25.         Rst(i / 2 + 1, 2) = Mid(Split(Split(brr(i), """")(3), "</a>")(0), 2)
  26.         '提取净值日期
  27.         Rst(i / 2 + 1, 3) = Split(Split(Split(brr(i), """")(3), "<td>")(1), "</td>")(0)
  28.         '份额净值(元)
  29.         Rst(i / 2 + 1, 4) = Val(Split(Split(Split(brr(i), """")(3), "</td>")(2), "<td>")(1))
  30.         '份额净值(元)
  31.         Rst(i / 2 + 1, 4) = Val(Split(Split(Split(brr(i), """")(3), "</td>")(2), "<td>")(1))
  32.          '份额累计净值(元)
  33.         Rst(i / 2 + 1, 5) = Val(Split(Split(Split(brr(i), """")(3), "</td>")(3), "<td>")(1))
  34.          '份额累计净值(元)
  35.         sr = Split(Split(Split(brr(i), """")(3), "</td>")(4), "<td>")(1)
  36.         If sr Like "*--*" Then
  37.             Rst(i / 2 + 1, 6) = "--"
  38.         Else
  39.             Rst(i / 2 + 1, 6) = Val(sr)
  40.         End If
  41.         sr = ""
  42.         '提取当日(%)及以后的各列
  43.         For j = 7 To 13
  44.             Ar = Split(Split(Split(brr(i), """")(3), "</td>")(j - 2), ">")
  45.             Rst(i / 2 + 1, j) = Val(Ar(UBound(Ar) - 1))
  46.             Erase Ar
  47.         Next
  48.     Next

  49.     '将结果数组Rst的数据写入工作表
  50.     [A1].Resize(i / 2, 13) = Rst
  51.     Columns.AutoFit
  52. End Sub
附件:
运用VBA提取网页的基金信息到Excel工作表中.rar
2楼
peterchen
小千老师威武!速度确实快了很多,tks!
3楼
cihren
太强大了,哈
4楼
小沐
如果想要提取银监会所有政策法规的链接(显示的是法规名称,点击可以直接链接到网页)和对应的颁布日期http://www.cbrc.gov.cn/chinese/home/docViewPage/110014&current=1

是否可以实现

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap