通过简单的VBA编写,我们可以让EXCEL变成股票查看软件,可以查看股票涨跌情况。如果录入了自己的持股信息,还可以查看自己的收益情况。也许有人会说有股票软件为什么还要用EXCEL来查看,这我就不解释了。
以下是EXCEL查看的界面,点“刷新”按钮可以实时刷新股票信息, 红框中的数据是VBA代码会更新的。点“刷新启停”按钮,可以让EXCEL自动刷新信息(5秒刷新一次),再点一次停止自动刷新。
下面我们简单说下操作的步骤及代码。
1. 新建一个EXCEL文件,另存成“Excel启用宏的工作簿(*.slsm)
2. 打开菜单"开发工具",点工具栏"插入",选择铵钮进行,宏名输入宏名输入“refresh", 按钮名称改为“刷新”。
3. 点上图中的"新建"打开VBA的编辑界面,在右边的代码窗口清空代码,输入文末的代码,保存后关闭VBA代码窗口。
由于代码有400多行,为避免影响阅读,放在了最后。
代码的原理是会针对EXCEL中的市场代码和股票代码,去特定的网址查询股票信息,解析后在页面显示。
4. 参照"刷新"按钮的创建方法,创建“刷新启停”按钮并指定宏名为startRefresh。
5. 参照主界面图输入基本信息,股票的代码根据自己的要求来填写。注意数据的开始位置必须和主界面图一致,否则就要自己调整了代码了。
通过以上步骤,属于你自己的EXCEL股票查看软件就创建完成了,点刷新就可以看到自己录入的股票的行情了。
需要原始EXCEL文档的,可以在留言区留下您的邮箱地址,我会在看到后邮件发送给你们。
代码:
Public startFlag As Boolean
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub refresh()
info ("刷新中...")
Application.ScreenUpdating = False '关闭屏幕刷新
displayMarket (6)
display (11)
Application.ScreenUpdating = True '打开屏幕刷新
info ("完成!")
End Sub
Sub refreshDetail()
If isExcelTradeOpen() Then
Exit Sub
End If
info ("刷新中...")
Application.ScreenUpdating = False '关闭屏幕刷新
'显示第1个股票
displayDetailInfo "C"
'显示第2个转债
displayDetailInfo "I"
'显示转债的股票
displayDetailInfo "O"
Application.ScreenUpdating = True '打开屏幕刷新
info ("完成!")
End Sub
Sub display(row As Integer)
'Dim row As Integer
'数据开始行
'row = 11
Do While True
Set cellName = Cells(row, "C")
If cellName = "" Then Exit Do
displayRow row
row = row + 1
Loop
End Sub
Sub displayMarket(row As Integer)
Do While True
Set cellName = Cells(row, "C")
If cellName = "" Then Exit Do
displayMarketRow row
row = row + 1
Loop
End Sub
Sub startRefresh()
If IsEmpty(startFlag) Then startFlag = False
Set cellAutoRefresh = Cells(4, "E")
startFlag = Not startFlag
If startFlag Then
cellAutoRefresh.Value = "自动刷新中..."
refreshTimerAction
Else
cellAutoRefresh.Value = "停止!"
End If
End Sub
Sub refreshTimerAction()
'Cells(8, "C").value = Cells(8, "C").value + 1
refresh
Dim newTime
'每5秒执行一次
newTime = Now + TimeValue("00:00:05")
If startFlag Then
Application.OnTime newTime, "refreshTimerAction"
End If
End Sub
Sub displayMarketRow(row As Integer)
Set cellCode = Cells(row, "D")
Dim stockCode As String
stockCode = cellCode.Value
displayInfo getSinaMarketCode(stockCode), row, False
End Sub
Sub displayRow(row As Integer)
Set cellCode = Cells(row, "D")
Dim stockCode As String
stockCode = cellCode.Value
displayInfo getSinaStockCode(stockCode), row, False
End Sub
Function getStockInfo(stockCode As String)
Dim url As String
'url = "http://hq.sinajs.cn/list=sh110032"
url = "http://hq.sinajs.cn/list="
url = url + stockCode
Dim responseText As String
responseText = getResponseText(url)
Dim array1, infoStr, infos
array1 = Split(responseText, """")
If UBound(array1) > 1 Then
infoStr = array1(1)
infos = Split(infoStr,