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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → 交易结果记录excel

   

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


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

主题:交易结果记录excel

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


加好友 发短信
等级:论坛游侠 帖子:581 积分:171 威望:0 精华:0 注册:2013/4/2 6:58:20
交易结果记录excel  发帖心情 Post By:2014/4/1 1:02:23 [只看该作者]

自定义函数VBA部份:

 

Function Wxls(Formula,V1,v2,v3,v4,v5,v6,v7,v8,v9,v10)
    Wxls=0
 dim objExcel,objWorkbook 
 on error resume next
 Set objExcel = getObject("Excel.Application")
 if err.number<>0 then
   Set objExcel = CreateObject("Excel.Application")
   Set objWorkbook = objExcel.Workbooks.Open("d:\test\Test.xlsx")  '打开指定文件
 end if 
   objExcel.Visible = True
   vbRow=objExcel.sheets(1).UsedRange.Rows.Count+1   
    objExcel.sheets(1).Cells(vbRow,1).Value = (date)
    objExcel.sheets(1).Cells(vbRow,2).Value = V1
    objExcel.sheets(1).Cells(vbRow,3).Value = V2
    objExcel.sheets(1).Cells(vbRow,4).Value = V3
    objExcel.sheets(1).Cells(vbRow,5).Value = V4
    objExcel.sheets(1).Cells(vbRow,6).Value = V5
    objExcel.sheets(1).Cells(vbRow,7).Value = V6
    objExcel.sheets(1).Cells(vbRow,8).Value = V7
    objExcel.sheets(1).Cells(vbRow,9).Value = V8
    objExcel.sheets(1).Cells(vbRow,10).Value = V9
    objExcel.sheets(1).Cells(vbRow,11).Value = V10 
 objExcel.Application.Displayalerts = false
 objExcel.application.Save
 objExcel.application.quit
End Function

在一个后台PEL中写入如下语句:

 

Wr:=Wxls(Profit11,Profit12,Profit13,Profit14,Profit15,Profit16,Profit17,Profit18,Profit19,Profit20);//写入Excel表格

 

程序没有执行写入excel的动作。不知道哪里偶问题?

 

但是,还是这一句Wr:=Wxls(Profit11,Profit12,Profit13,Profit14,Profit15,Profit16,Profit17,Profit18,Profit19,Profit20);执行在图表下,就有写入excel,请问哪里写错了?

 

 

 


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


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

请您等待



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

客户服务部

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

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

service@weistock.com

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

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


加好友 发短信
等级:论坛游侠 帖子:581 积分:171 威望:0 精华:0 注册:2013/4/2 6:58:20
  发帖心情 Post By:2014/4/2 13:14:36 [只看该作者]

还未有结果吗?

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


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

这一行 Set objExcel = getObject("Excel.Application") 错误
改为:

 Set objExcel = getObject(,"Excel.Application") 

加了一个逗号!
你原来的代码会不断打开excel文件,瞬间就成千上万了了,肯定会搞死的。

另外,把dim objExcel,objWorkbook这一行,放到function体外去,设置为public型
public objExcel,objWorkbook
这样打开一次之后,变量就已经赋值了,不需要每次赋值。

save和quit那两行,不要,不然性能下降,无法工作。

[此贴子已经被作者于2014/4/2 14:44:56编辑过]

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


加好友 发短信
等级:论坛游侠 帖子:581 积分:171 威望:0 精华:0 注册:2013/4/2 6:58:20
  发帖心情 Post By:2014/4/2 20:11:11 [只看该作者]

以下是引用guotx2010在2014/4/2 14:43:27的发言:
这一行 Set objExcel = getObject("Excel.Application") 错误
改为:

 Set objExcel = getObject(,"Excel.Application") 

加了一个逗号!
你原来的代码会不断打开excel文件,瞬间就成千上万了了,肯定会搞死的。

另外,把dim objExcel,objWorkbook这一行,放到function体外去,设置为public型
public objExcel,objWorkbook
这样打开一次之后,变量就已经赋值了,不需要每次赋值。

save和quit那两行,不要,不然性能下降,无法工作。

[此贴子已经被作者于2014/4/2 14:44:56编辑过]

原来的代码在PEL调用的时候,以经做了限制,只调用一次,所以不存在瞬间打开很多文件的情况。

 

问题不在这里,问题是:图表下调用正常,而且也能股写入excel,并保存。但是在后台调用就没有动作,不执行打开excel表格和写入excel操作。


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


加好友 发短信
等级:罗宾汉 帖子:11808 积分:20695 威望:0 精华:10 注册:2009/8/18 8:15:13
  发帖心情 Post By:2014/4/2 20:28:44 [只看该作者]

这个后台和图表因该是不会有差别的,建议你做一些调试手段,看看2个不同的环境下运行时,哪些参数发生了改变



金字塔—专业程序化软件提供商

金字塔-技术部

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

工作时间:周一至周五 08:30 - 17:30   周末及法定节假日休息

Email:service@weistock.com
 回到顶部
帅哥哟,离线,有人找我吗?
deni977
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:论坛游侠 帖子:581 积分:171 威望:0 精华:0 注册:2013/4/2 6:58:20
  发帖心情 Post By:2014/4/2 21:40:30 [只看该作者]

确实很郁闷,我用的是3.11版本,代码如下:

 

GLOBALVARIABLE:Flag:=1;

 Latime:=DYNAINFO(207);    

 if (( Latime=213301  )&&  barstatus=2 && Flag=ref(Flag,1)) then begin 
  Profit11:=2;
     Profit12:=2;
     Profit13:=3;
     Profit14:=4;
     Profit15:=5;
     Profit16:=6;
     Profit17:=7;
     Profit18:=8;
     Profit19:=9;
     Profit20:=10;
     Profit21:=11;
     Profit22:=12;
     Profit23:=13;
    
     Wr:=Wxls(Profit11,Profit12,Profit13,Profit14,Profit15,Profit16,Profit17,Profit18,Profit19,Profit20);//写入Excel表格
     
     
//     debugout('latime=%.0f',latime);
       
     Tmp:=not(Flag);
  Flag:=Tmp;
 end 

 

在图表下确实写入excel表格了,而且存盘退出。

 

同样这段代码,运行在后台,1秒周期或者1分周期,都是一样的结果:没有操作excel表格

 

 

 


 


此主题相关图片如下:11.jpg
按此在新窗口浏览图片

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


加好友 发短信
等级:论坛游侠 帖子:581 积分:171 威望:0 精华:0 注册:2013/4/2 6:58:20
  发帖心情 Post By:2014/4/2 21:42:10 [只看该作者]

后台的时候把这句 //     debugout('latime=%.0f',latime); 去除前面的//

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


加好友 发短信
等级:论坛游侠 帖子:581 积分:171 威望:0 精华:0 注册:2013/4/2 6:58:20
  发帖心情 Post By:2014/4/3 0:22:19 [只看该作者]

在VBA代码段,增加信息输出的 “msgbox v10”,如下,后台调用时,是有输出信息框的,证明程序已经运行到信息提示行这里:

 

Function Wxls(Formula,V1,v2,v3,v4,v5,v6,v7,v8,v9,v10)
    Wxls=0
 dim objExcel,objWorkbook 
 on error resume next
 Set objExcel = getObject("Excel.Application")
 if err.number<>0 then
   Set objExcel = CreateObject("Excel.Application")
   Set objWorkbook = objExcel.Workbooks.Open("d:\test\Test.xlsx")  '打开指定文件
 end if 
   objExcel.Visible = True
   vbRow=objExcel.sheets(1).UsedRange.Rows.Count+1   
    objExcel.sheets(1).Cells(vbRow,1).Value = (date)
    objExcel.sheets(1).Cells(vbRow,2).Value = V1
    objExcel.sheets(1).Cells(vbRow,3).Value = V2
    objExcel.sheets(1).Cells(vbRow,4).Value = V3
    objExcel.sheets(1).Cells(vbRow,5).Value = V4
    objExcel.sheets(1).Cells(vbRow,6).Value = V5
    objExcel.sheets(1).Cells(vbRow,7).Value = V6
    objExcel.sheets(1).Cells(vbRow,8).Value = V7
    objExcel.sheets(1).Cells(vbRow,9).Value = V8
    objExcel.sheets(1).Cells(vbRow,10).Value = V9
    objExcel.sheets(1).Cells(vbRow,11).Value = V10 

    msgbox v10
 objExcel.Application.Displayalerts = false
 objExcel.application.Save
 objExcel.application.quit
End Function

 

问题还是纠结在:没有打开excel表格和将数据写入excel,但是测试仍然发现,在图表下正常,盼盼高手指导



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


加好友 发短信
等级:论坛游侠 帖子:581 积分:171 威望:0 精华:0 注册:2013/4/2 6:58:20
  发帖心情 Post By:2014/4/3 22:23:49 [只看该作者]

28000元的机构版用户,美其名曰“你是金字塔的vip客户”,难道要把此贴发到vip区才有人协助??

 回到顶部
总数 13 1 2 下一页