欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 导出到excel时发生的故障

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有4944人关注过本帖树形打印复制链接

主题:导出到excel时发生的故障

帅哥哟,离线,有人找我吗?
黑黑若
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:3 积分:0 威望:0 精华:0 注册:2014/3/4 12:45:04
导出到excel时发生的故障  发帖心情 Post By:2014/3/4 12:53:06 [只看该作者]

用论坛软件导出即时数据到excel时:

 

 MyXL.Application.activesheet.Range("D" & Cstr(j+1))  =  report1.LastHigh
   MyXL.Application.activesheet.Range("E" & Cstr(j+1))  =  report1.LastLow

 

上述语句导出的总是前天的数据 而不是昨天的。请问这是什么问题?谢谢


 回到顶部
帅哥哟,离线,有人找我吗?
fly
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2014/3/4 13:12:04 [只看该作者]

你导出哪个品种的几分钟数据


金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
黑黑若
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:3 积分:0 威望:0 精华:0 注册:2014/3/4 12:45:04
  发帖心情 Post By:2014/3/4 13:29:21 [只看该作者]

导出的是期指当月 上证指数 沪深300,日线数据。lastclose都对,但lasthigh和lastlow 都是前天的,试了很久,都是这样,为什么呢?


 回到顶部
帅哥哟,离线,有人找我吗?
fly
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:5082 积分:17642 威望:0 精华:6 注册:2010/7/15 9:05:58
  发帖心情 Post By:2014/3/5 11:30:33 [只看该作者]

再多给出一些代码看看,

你检查检查,有没哪些语句会导致j变化



金字塔—专业程序化交易量化投资平台

客户服务部

-----------------------------------------------------------

欢迎您参加我公司的技术培训,具体培训需求请发邮件到

service@weistock.com

您的宝贵建议或者投诉,请发往邮箱:weiwei@weistock.com

 回到顶部
帅哥哟,离线,有人找我吗?
黑黑若
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:新手上路 帖子:3 积分:0 威望:0 精华:0 注册:2014/3/4 12:45:04
  发帖心情 Post By:2014/3/6 10:48:35 [只看该作者]

Public MyXL
private StockCode(30),StockMarket(30)
Sub APPLICATION_VBAStart()
 Call Application.SetTimer(10, 500)
 GetExcelFile("D:\Stock.xlsx")
End Sub
Sub APPLICATION_Timer(ID) 
 GetStockCode
 GetNewPrice
end sub
Sub GetNewPrice()
  dim i
 dim j
 on error resume next
 i=CDbl(Document.GetPrivateProfileString("Stock","StockCount",1,"D:\StockCode.INI"))
 For j=1 to i
  application.MsgOut "正在导出:" & StockCode(j) & "行情..."
   Set Report1 = marketdata.GetReportData(StockCode(j),StockMarket(j))
   MyXL.Application.activesheet.Range("A" & Cstr(j+1)) =  StockCode(j)
   MyXL.Application.activesheet.Range("B" & Cstr(j+1)) = Report1.NewPrice
   MyXL.Application.activesheet.Range("C" & Cstr(j+1))  =  Report1.LastClose
   MyXL.Application.activesheet.Range("D" & Cstr(j+1))  =  Report1.LastHigh
   MyXL.Application.activesheet.Range("E" & Cstr(j+1))  =  Report1.LastLow
   MyXL.Application.activesheet.Range("F" & Cstr(j+1))  =  Report1.Open
   MyXL.Application.activesheet.Range("G" & Cstr(j+1))  =  Report1.High
   MyXL.Application.activesheet.Range("H" & Cstr(j+1))  =  Report1.Low
   
 Next 
End Sub
'取得要监控的品种代码
Sub GetStockCode()
 dim i
 dim j
 i=CDbl(Document.GetPrivateProfileString("Stock","StockCount",1,"D:\StockCode.INI"))
 For j=1 to i
  StockCode(j)=Document.GetPrivateProfileString("Stock","Code" & Cstr(j),"","D:\StockCode.INI")  '品种号码
  StockMarket(j)=Document.GetPrivateProfileString("Stock","Market" & Cstr(j),"","D:\StockCode.INI") '交易所代码
  'application.MsgOut "i:" & i & "," & stockcode(j) & "," & StockMarket(j)
 Next
End Sub
'打开Excel
Sub GetExcel()
    Const ERR_APP_NOTRUNNING = 429
 
    On Error Resume Next
    Set MyXL = GetObject(, "Excel.Application")
    If Err = ERR_APP_NOTRUNNING Then
        Set MyXL = CreateObject("Excel.Application")
    End If
   
    MyXL.Application.Visible = True
End Sub
'打开某个excel文件
Sub GetExcelFile(sFileName)
    '此过程暂停使用,替代过程为:GetExcel
    Dim sWinName                '窗口名
    Dim iPos
   
    '测试 Microsoft Excel 的副本是否在运行。
    On Error Resume Next    '延迟错误捕获。
    '不带第一个参数调用 Getobject 函数将
    '返回对该应用程序的实例的引用。
    '如果该应用程序不在运行,则会产生错误。
    Set MyXL = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then
  Set MyXL = CreateObject("Excel.Application")
 End if
    '将对象变量设为对要看的文件的引用。
    Set MyXL = GetObject(sFileName)
   
    iPos = InStrRev(sFileName, "\", -1, vbTextCompare)
    sWinName = Mid(sFileName, iPos + 1, Len(sFileName) - iPos - 4)
   
    '设置其 Application 属性,显示 Microsoft Excel。
    '然后使用 MyXL 对象引用的 Windows 集合
    '显示包含该文件的实际窗口。
    MyXL.Application.Visible = True
    MyXL.Application.ScreenUpdating = True
    MyXL.Parent.Windows(1).Activate
    MyXl.Application.Sheets(1).Visible=true
End Sub
'关闭Excel
Sub CloseExcel()
    On Error Resume Next
    MyXL.Application.DisplayAlerts = False
    'MyXL.Application.Save
    MyXL.Application.Quit
'    Set MyXL = Nothing    '释放对该应用程序
End Sub
--------------------------------------------------------------------------

 

这是全部。请检查,谢谢。如果仍有问题,我拟明日去公司当面咨询。可否私信电话联系。


 回到顶部
帅哥哟,离线,有人找我吗?
pel46585
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:167 积分:661 威望:0 精华:1 注册:2009/12/25 23:43:24
  发帖心情 Post By:2014/12/15 9:03:21 [只看该作者]

 MyXL.Application.activesheet.Range("D" & Cstr(j+1))  =  report1.LastHigh
   MyXL.Application.activesheet.Range("E" & Cstr(j+1))  =  report1.LastLow
修改为
 MyXL.Application.activesheet.Range("D" & Cstr(j+1)).Value  =  report1.LastHigh
   MyXL.Application.activesheet.Range("E" & Cstr(j+1)).Value  =  report1.LastLow
试下,祝你成功。

版主评定:好评,获得9个金币奖励好评,获得9个金币奖励
(理由:奖励)
 回到顶部
帅哥哟,离线,有人找我吗?
guotx2010
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:蜘蛛侠 帖子:1366 积分:5210 威望:0 精华:7 注册:2010/12/11 18:00:33
  发帖心情 Post By:2014/12/15 12:13:32 [只看该作者]

report1.lasthigh,lastlow本来就是昨最高、最低价

如果要用今天的最高、最低价,改为high、low

 

 不好意思,看错了,楼上的方法是不是已经可以了?

[此贴子已经被作者于2014/12/15 12:18:11编辑过]

 回到顶部