FAQ > 金融建模 > 第三方交互 > Excel

Q:Excel如何调用天软函数批量取数    

  • A:天软提供与excel交互的相关接口支持批量取数,包括:
     1.execl中直接调用天软函数返回数组;
     2.excel中使用vba与天软交互对单元格遍历赋值。

    实现范例
    范例:在excel中返回一组代码在指定日期序列内每日的涨幅
     
    方式一:调用天软函数返回数组数据
    参考:FAQ:Q:Excel调用天软函数的方法说明
    模型:附件:Tsdn_getdatatoexcel.fun
    Tsdn_getdatatoexcel
    Function Tsdn_getdatatoexcel(stockarr,datearr);
    Begin
    {
      说明:导出数组数据到excel
      参数:
        stockarr:一维字符串数组,代码列表
        datearr:一维日期数组,日期序列
    }
      rt:=array();
      for i,stock in stockarr do
        for j,datetime in datearr do
          rt[j,i]:=specall(stockzf3(),array(pn_stock():stock,pn_date():datetime));
      return rt;
    End;

    实现步骤
     1.编辑取数模型,比如:Tsdn_getdatatoexcel
     2.选择数据显示范围,下标如果是数字格式不会返回,如果是字符串格式则会返回
     3.输入调用代码,比如:=tsl("Tsdn_getdatatoexcel",B1:K1,A2:A9),然后按ctrl+shift+enter 进行确认
     
     
    方式二:使用vba交互遍历赋值
    参考:FAQ:2015-02-09-应用专题-第三方交互07:天软平台与VBA交互
    vba代码
    Public Sub 批量取数()
      fcol = 2
      frow = 2
      Sheet = "vba交互"
      Set Obj = CreateObject("TSExpert.CoExec")
      For i = 0 To 9
        Obj.Stock = Worksheets(Sheet).Cells(1, fcol + i)
        For j = 0 To 7
          Obj.times = Worksheets(Sheet).Cells(frow + j, 1)
          Data = Obj.RemoteCallFunc("StockZf3", "")
          Value = Data
          Worksheets(Sheet).Cells(frow + j, fcol + i) = Value
        Next j
      Next i
    End Sub

    结果