excel怎么启用宏_用VBA让EXCEL变成股票查看软件

通过简单的VBA编写,我们可以让EXCEL变成股票查看软件,可以查看股票涨跌情况。如果录入了自己的持股信息,还可以查看自己的收益情况。也许有人会说有股票软件为什么还要用EXCEL来查看,这我就不解释了。

以下是EXCEL查看的界面,点“刷新”按钮可以实时刷新股票信息, 红框中的数据是VBA代码会更新的。点“刷新启停”按钮,可以让EXCEL自动刷新信息(5秒刷新一次),再点一次停止自动刷新。

60a20dde45b497b365521a075b3a96ba.png

主界面

下面我们简单说下操作的步骤及代码。

1. 新建一个EXCEL文件,另存成“Excel启用宏的工作簿(*.slsm)

037d55472fcfa3e1bb554b6c210e8428.png

2. 打开菜单"开发工具",点工具栏"插入",选择铵钮进行,宏名输入宏名输入“refresh", 按钮名称改为“刷新”。

f750c1e663d4c52fa5529e06ce086ac4.png

3. 点上图中的"新建"打开VBA的编辑界面,在右边的代码窗口清空代码,输入文末的代码,保存后关闭VBA代码窗口。

852026d249f982d560f8ac1a339d580b.png

由于代码有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,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值