本人自制了一个记录五档行情的程序,在其他SUb处都能正常记录,但是在Sub MARKETDATA_ReportNotify(ReportData)下记录总是失败,求问题原因!
代码如下:
Sub MARKETDATA_ReportNotify(ReportData)
application.MsgOut "运行到这里1"
xlSheet.Cells(row+2, 1)=438
xlSheet.Cells(row+1, 2)=26550
row=row+1
application.MsgOut "运行到这里2"
end sub
其中
在主程序中已经定义好文件,如下:
Set xlApp = CreateObject("Excel.Application") '创建EXCEL对象
Set xlBook = xlApp.Workbooks.Open("d:\wudangjilu.xlsx") '打开已经存在的EXCEL工件簿文件
xlApp.Visible = true '设置EXCEL对象可见(或不可见)
Set xlSheet = xlBook.Worksheets("sheet1") '设置活动工作表
row=xlSheet.UsedRange.Rows.Count '已经使用行数
col=xlSheet.UsedRange.Columns.Count
上述程序只要采用call Marketdata.RegReportNotify(“IF10”,"ZJ")注册的事件均只会运行到
application.MsgOut "运行到这里1"
运行不到
application.MsgOut "运行到这里2"
而当我自己调试着尝试主动调用时 call MARKETDATA_ReportNotify(1),程序会正常跑到application.MsgOut "运行到这里2" ,且记录完全正常!!
请问一下这问题出在哪里,谢谢了!!!
目前解决办法为在程序运行完后,即VBAEND事件中,从内存中读取数据,数据能正常读取书写,但是一旦达到很大的数据,如160000条,很容易崩溃,因此还是需要在 Sub MARKETDATA_ReportNotify(ReportData)事件中逐条记录,请大家试试看能不能正常解决该问题。本人新手,谢谢你们的支持和帮助
[此贴子已经被作者于2014/10/9 16:08:49编辑过]
估计你的代码出在EXCEL问题上把,这个已经不属于我们金字塔的客服范畴了,建议你试试导出到文本文件
导入到文本文件数据不好读取,后续处理不好做,因而需要导入到excle
为什么主动call能正常运行,金字塔事件自动触发却不行了,理论上来说除了500ms事件太短的原因外(即一个tick运行时另一个tick到了冲掉了后续程序)不会出现这种情况,但是我只写几个数据500ms应该完全够了的
分笔数据的量还有速度是很快的,EXCEL是受不了这些的,你还是考虑用文本吧