通过以下EXCEL数据的处理股价图,就可以很方便地查看38家A股上市银行当日股票变动情况了。

具体如下图:

股价图

方法如下:

一、通过VBA获取所有上市银行的证券名称和证券代码

可以通过以下VBA代码:

Sub 提取上市银行列表()

Call 填充上市公司证券列表("银行,农商行,张家港行")

End Sub

Sub 填充上市公司证券列表(Optional strKeyWord As String = "")

Dim strContent As String

With CreateObject("WinHttp.WinHttpRequest.5.1")

.Open "GET", "http://ddx.gubit.cn/js/stockCode.js", False

.Send

'简体中文

strContent = StrConv(.responseBody, vbUnicode, &H804)

'JavaScript

With CreateObject("MSScriptControl.ScriptControl")

.Language = "JScript"

.AddCode strContent

Dim iCount As Integer

iCount = .Eval("stockCodeArray.length")

Dim intRows As Integer

intRows = 0

Cells(1, 1) = "证券代码"

Cells(1, 2) = "证券名称"

If strKeyWord = "" Then

For i = 0 To iCount - 1

Cells(i + 2, 1) = .Eval("stockCodeArray[" & i & "][0]")

Cells(i + 2, 2) = .Eval("stockCodeArray[" & i & "][1]")

Next i

Else

Dim str证券名称 As String

Dim bln是否包含 As Boolean

strKeyWord = Replace(strKeyWord, "股价图,", ",")

For i = 0 To iCount - 1

str证券名称 = .Eval("stockCodeArray[" & i & "][1]")

bln是否包含 = False

For Each strList In Split(strKeyWord, ",")

If Len(Replace(str证券名称, strList, "")) < Len(str证券名称) Then

bln是否包含 = True

Exit For

End If

Next

If bln是否包含 Then

Cells(intRows + 2, 1) = .Eval("stockCodeArray[" & i & "][0]")

Cells(intRows + 2, 2) = str证券名称

intRows = intRows + 1

End If

Next i

End If

End With

End With

Cells(1, 1).Select

End Sub

二、通过Sina财经网站获取每一支股票当日交易信息

通过公式股价图,直接引用:

股价图

自定义函数如下:

Function StockFieldInfoFromSina(Optional strType As Integer = 0) As String

Dim StockFieldInfo As String

Select Case strType

Case 0

StockFieldInfo = "证券名称"

Case 1

StockFieldInfo = "今日开盘价"

Case 2

StockFieldInfo = "上日收盘价"

Case 3

StockFieldInfo = "当前价格"

Case 4

StockFieldInfo = "今日最高价"

Case 5

StockFieldInfo = "今日最低价"

Case 6

StockFieldInfo = "竞买价"

Case 7

StockFieldInfo = "竞卖价"

Case 8

StockFieldInfo = "成交数量"

Case 9

StockFieldInfo = "成交金额"

Case 10

StockFieldInfo = "买一数量"

Case 11

StockFieldInfo = "买一价格"

Case 12

StockFieldInfo = "买二数量"

Case 13

StockFieldInfo = "买二价格"

Case 14

StockFieldInfo = "买三数量"

Case 15

StockFieldInfo = "买三价格"

Case 16

StockFieldInfo = "买四数量"

Case 17

StockFieldInfo = "买四价格"

Case 18

StockFieldInfo = "买五数量"

Case 19

StockFieldInfo = "买五价格"

Case 20

StockFieldInfo = "卖一数量"

Case 21

StockFieldInfo = "卖一报价"

Case 22

StockFieldInfo = "卖二数量"

Case 23

StockFieldInfo = "卖二报价"

Case 24

StockFieldInfo = "卖三数量"

Case 25

StockFieldInfo = "卖三报价"

Case 26

StockFieldInfo = "卖四数量"

Case 27

StockFieldInfo = "卖四报价"

Case 28

StockFieldInfo = "卖五数量"

Case 29

StockFieldInfo = "卖五报价"

Case 30

StockFieldInfo = "日期(yyyy-MM-dd)"

Case 31

StockFieldInfo = "时间(hh:mm:ss)"

Case 32

StockFieldInfo = "未知字段"

Case 33

StockFieldInfo = "未知字段"

Case Else

StockFieldInfo = "vbNull"

End Select

StockFieldInfoFromSina = StockFieldInfo

End Function

Function StockInfoFromSina(strCode As String, Optional strType As Integer = 0) As String

Dim strStockInfo As String

strStockInfo = ""

Dim url As String

'Json地址

url = "http://hq.sinajs.cn/list="

Dim preCode As String

preCode = Left(strCode, 1)

Select Case preCode

Case "0", "3"

'深圳A股

url = url & "sz" + strCode

Case Else

'上海A股

url = url & "sh" + strCode

End Select

Dim strResponseText As String

Dim strJson As String

With CreateObject("MSXML2.XMLHTTP")

.Open "GET", url, False

.Send

strResponseText = .responseText

End With

'根据双引号提取数据

strJson = Split(strResponseText, Chr(34))(1)

'根据类别参数,提取字符

Select Case strType

Case 0 To 33

strStockInfo = Split(strJson, ",")(strType)

Case Else

strStockInfo = "vbNull"

End Select

'反馈结果

StockInfoFromSina = strStockInfo

End Function

三、通过条件格式,将上涨的调整为红色,将下跌的调整为绿色

股价图

股价图

题外话:

查股票的方法,千万种。

上述案例,只是一个Excel应用举例。

并且,用VBA不同的方法,提取从网页获取的数据。