以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  关于VBA读取EXCEL表单形成的多维数组返回问题  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=75831)

--  作者:tiantian2888
--  发布时间:2015/2/24 22:03:29
--  关于VBA读取EXCEL表单形成的多维数组返回问题
一个excel 表单是一个列表,入下:
 股票代码         140930    141231      150331
300001             3366        4447        5789 
300002            7890         7834        3678

使用vba读取的结果,用两个FOR 循环,可以形成一个二维数组:   A[代码,0 to 2]  

但是由于金字塔只有一维数组,所以,在打开并读取EXCEL时,用FOR循环,每一行读取完成后,形成一个一维数组。 如:{300001 ,  3366, 4447,  5789 },读取完成后通过接口FLL.VARDATA方法传到金字塔里处理完。  这就带来一个问题。 这边数据没读取完,就要跳出VBS <% %>代码,执行金字塔代码, 之后再回到<%%>里重新执行外层循环,造成vba代码割裂, 这样能行的通吗?

如果行不通该如何解决?


代码如下:
 variable:gdrs[10]=\'ABC\';

<%
SET abc = CreateObject("scripting.filesystemobject")
path="D:\\test.xlsm"
  If abc.fileexists(path) = True Then
    SET wkbone13 = Workbooks.Open(path)
      hsnumber=wkbone13.sheets("sheet1").cells(1,1).currentregion.columns.count-2 \'数组第一个元素是代码,其余的元素为数字
      redim gdhs(0 to hsnumber-1)
      stknumber=wkbone13.sheets("sheet1").cells(1,1).currentregion.rows.count
    for i=2 to stknumber       
    strcode=right(wkbone13.sheets("sheet1").cells(i,2),6)
    gdhs(0)=strcode
    for j=1 to stknumber-1  \'数组的第一个值是代码。
        gdhs(j)=wkbone13.sheets("sheet1").cells(i,3+j)
        next 
        ffl.vardata("gdrs")=gdhs  ’形成一维数组,需要回金字塔处理,造成完成FOR 循环被割裂了,还需关闭EXCEL,这些任务分离下面的代码去了,这样能行吗?行不通该 b                                                                 如何解决,请高手帮忙解答。
%>
                      //处理一维数组
                     strcode:=gdrs[1];
                     for i=2 to 10 do       
                           begin 
         DRAWTEXT(1,HIGH, gdrs[1]),COLORYELLOW;
                  end
<%
next                                   \'被割裂的FOR循环
     \'wkbone13.Close True   \'关闭EXCEL。
  end
%>