分享

Excel | 运用VBA提取网页数据的一个实例 | 网页,数据,信息,提取,基金

 mastereye 2018-01-23
 本帖最后由 2339083510 于 2017-2-10 14:43 编辑
http://www./thread-42824-1-1.html

非常感谢分享,研究你的帖子,我也大致上搞懂了excel采数据的一些思路,不过你的代码太复杂,我也写了一个,简化了一些(包含链接就发不出来,这个自己把"”%%%%%%%%%%%%%%%%%%"替换为链接就行了
  1. Sub 运用VBA提取网页的基金信息到Excel工作表中()
  2.     On Error GoTo ErrorHandler
  3.     Dim re As Object, srg$, pos1%, pos2%, i%, j%
  4.     Dim arr() As String, brr() As String, crr() As String, Rst(1 To 10000, 1 To 13)
  5.     Application.ScreenUpdating = False

  6.     '下载数据
  7.     With CreateObject("Microsoft.XMLHTTP")
  8.         .Open "get", "%%%%%%%%%%%%%%%%%%", False
  9.         .send
  10.         srg = .responsetext
  11.     End With

  12.     '提取标题
  13.     pos1 = InStr(srg, "<THEAD>") + Len("<THEAD>")
  14.     pos2 = InStr(srg, "</THEAD>")
  15.     arr = Split(Mid(srg, pos1, pos2 - pos1), "</td>")
  16.     Set re = CreateObject("VBScript.RegExp")
  17.     With re
  18.         .Global = True
  19.         .Pattern = "<[^>]+>|\s+"
  20.         For i = 1 To 13
  21.             Rst(1, i) = .Replace(arr(i + 1), "")
  22.         Next
  23.     End With

  24.     '提取内容
  25.     brr = Split(Mid(srg, pos2, InStr(pos2, srg, "</table>")), "</tr>")
  26.     With re
  27.         For i = 0 To UBound(brr) - 7
  28.             crr = Split(brr(i), "</td>")
  29.             For j = 1 To 13
  30.                 If j = 1 Then
  31.                     Rst(i + 2, j) = "'" & .Replace(crr(j + 1), "")
  32.                 Else
  33.                     Rst(i + 2, j) = .Replace(crr(j + 1), "")
  34.                 End If
  35.             Next
  36.         Next
  37.     End With

  38.     '把数据写入当前工作表
  39.     Cells.Clear
  40.     [A1].Resize(i + 1, 13) = Rst
  41.     Columns.AutoFit
  42. ErrorHandler:
  43.     Set re = Nothing
  44.     Erase arr, brr, crr, Rst
  45.     Application.ScreenUpdating = True
  46. End Sub
复制代码


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多