分享

Excel使用VBA读取实时WebService股票数据

 TTTB018 2018-09-15

环境:Win7 Excel2016


采用的是腾讯提供的股票接口,例如:http://qt./q=sh600016,返回输入如下:

v_sh600016='1~民生银行~600016~8.58~8.68~8.67~886218~499700~386518~8.58~772~8.57~6361~8.56~8593~8.55~12720~8.54~6803~8.59~4279~8.60~9390~8.61~2093~8.62~3318~8.63~3836~15:00:04/8.58/1/S/858/27675|15:00:01/8.58/817/B/701197/27670|14:59:58/8.58/306/B/262275/27663|14:59:55/8.58/261/B/223686/27659|14:59:52/8.57/37/S/31709/27655|14:59:49/8.58/134/B/114869/27649~20170803150552~-0.10~-1.15~8.74~8.56~8.58/885400/764678837~886218~76538~0.30~6.48~~8.74~8.56~2.07~2535.54~3130.45~0.90~9.55~7.81~0.84';

提取其中的名称(民生银行),收盘价格,昨日价格,涨跌百分比即可。


(1)打开Excel2016,保证第一列输入股票代码(第一行除外),2、3、4、5列留着待用,其余列根据需求自行添加,如下图:


(2)按ALT F11,在Sheet1的VBA通用代码中加入如下代码:

  1. Function FillOneRow(url As String, r As Integer) As Integer
  2. With CreateObject('msxml2.xmlhttp')
  3. .Open 'GET', url, False
  4. .send
  5. sp = Split(.responsetext, '~')
  6. If UBound(sp) > 3 Then
  7. FillOneRow = 1
  8. Cells(r, 2).Value = sp(1) '名称
  9. Cells(r, 3).Value = sp(3) '当前价格
  10. Cells(r, 4).Value = sp(4) '昨日收盘价
  11. Dim zhangDie As Double
  12. zhangDie = sp(32)
  13. Cells(r, 5).Value = zhangDie
  14. If zhangDie > 0 Then
  15. '上涨使用红色
  16. Cells(r, 5).Font.Color = vbRed
  17. Cells(r, 3).Font.Color = vbRed
  18. Else
  19. '下跌使用绿色
  20. Cells(r, 5).Font.Color = &H228B22
  21. Cells(r, 3).Font.Color = &H228B22
  22. End If
  23. Else
  24. FillOneRow = 0
  25. End If
  26. End With
  27. End Function
  28. Sub GetData()
  29. Dim succeeded As Integer
  30. Dim url As String
  31. Dim row As Integer
  32. Dim code As String
  33. For row = 2 To Range('A1').CurrentRegion.Rows.Count '从第二行开始
  34. code = Cells(row, 1).Value
  35. If code <> '' Then
  36. url = 'http://qt./q=sh' & code '沪市
  37. succeeded = FillOneRow(url, row)
  38. If succeeded = 0 Then
  39. url = 'http://qt./q=sz' & code '深市
  40. succeeded = FillOneRow(url, row)
  41. End If
  42. If succeeded = 0 Then
  43. MsgBox ('获取失败')
  44. End If
  45. End If
  46. Next
  47. End Sub

(3)选择ThisWorkbook选项,添加Workbook的Open函数,这样在excel打开的时候就会自动执行GetData

  1. Private Sub Workbook_Open()
  2. Call Sheet1.GetData
  3. End Sub


(4)关闭VBA,在Excel菜单->视图->宏->查看宏,弹出宏对话框:



点击执行,就能看到数据被填充了:


(5)点击选项,可以设置快捷命令,例如Ctrl R。

(6)Excel保存为可以运行宏的文件,如stock.xlsm


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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多