for date_i = 1 to Ubound(date_array) - 1
my_HistoryData = marketdata.GetHistoryDataByDate(TCCODE, TCMARKET, 5, date_i_b_str, date_i_e_str)
next
以上代码中的这一句:
marketdata.GetHistoryDataByDate(TCCODE, TCMARKET, 5, date_i_b_str, date_i_e_str)
在循环了几次后,就开始报错:
编译器错误:438
对象不支持此属性或方法
另外,出现这个报错后,如果再执行这段代码,不报错,但是一条数据也取不出来,结果都是空的。
说明:我下载了最近5年的历史日K线数据,数据应该是全的。
Sub APPLICATION_VBAStart()
application.MsgOut "开始运行..."
dim my_HistoryData, date_array(250)
Set my_HistoryData = marketdata.GetHistoryData("000001", "SH", 5)
for i = 750 to 1000 -1
date_array(i-750) = my_HistoryData.Date(i)
next
for date_i = 1 to Ubound(date_array) - 1
date_i_b_str = date_array(date_i-1)
date_i_e_str = date_array(date_i)
application.MsgOut date_i_b_str & " " & date_i_e_str
my_HistoryData = marketdata.GetHistoryDataByDate("600109", "SH", 5, date_i_b_str, date_i_e_str)
application.MsgOut my_HistoryData.count & " " & my_HistoryData.close(0)
marketdata.DestroyHistoryData
next
输出结果:
开始运行...
2014/1/21 2014/1/22
开始运行...
0:00:00 0:00:00
开始运行...
2014/1/21 2014/1/22
不但报错,而且多次运行的输出结果也很奇怪,每次都不一样,如上。
看你使用的是那种模式读取的数据,如果你用的是独立模式的,那么调用完一个品种数据后,你要释放对象的,否则会导致内存不足
-----------------------------
上面我已经贴了完整的代码,大哥帮忙看看啥问题
set my_HistoryData = marketdata.GetHistoryDataByDate("600109", "SH", 5, date_i_b_str, date_i_e_str) //这里set对象
另外看下工具-选项-维护这里内存保留调大点,在运行看看。下面是我这边输出情况
2013/1/16 2013/1/17
367 10.035
2013/1/17 2013/1/18
367 10.16
2013/1/18 2013/1/21
367 10.755
2013/1/21 2013/1/22
367 10.895
非常感谢 yukizzc! 真是这两个原因,解决了!!!