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

Q:如何在Excel里面调用天软函数    

  • A:
    天软提供了插件及VBA两种方式来实现Excel调用天软;插件方式由于每个单元格都需要和天软进行一次交互,速率较慢,这里建议用户使用VBA的模式,同MATLAB调用天软,基本模式是相同的,只需要用户修改函数名及参数的个数即可,相关案例可参考附件。
    附件:天软科技-如何在VBA调用天软模型(范例).xls
    代码解释如下:
    Private Sub CommandButton1_Click()
        '初始化ts对象
      Dim Obj As Object
      Set Obj = CreateObject("TSExpert.CoExec")
      
        '设置函数的参数信息
      Dim Args(0 To 3) As Variant
      Args(0) = Worksheets("VBA获取数据").Range("A2")
      Args(1) = Worksheets("VBA获取数据").Range("B2")
      Args(2) = Worksheets("VBA获取数据").Range("C2")
      Args(3) = Worksheets("VBA获取数据").Range("D2")

        '调用天软的函数,并将数据放到Excel对应的位置
      v = Obj.RemoteCallFunc("stocks_zf", Args)
      Call ClearOldData("VBA获取数据", "A5:Z2000")
      sR = GetTableRange("VBA获取数据", 5, 1, v)
      Worksheets("VBA获取数据").Range(sR) = v
    End Sub
      '获得数据的区域
    Public Function GetTableRange(SheetName, FromRow, FromCol, Data)
      RowCount = UBound(Data, 1) + 1
      ColCount = UBound(Data, 2) + 1
      Set MC = Worksheets(SheetName).Cells(FromRow, FromCol)
      Set EC = Worksheets(SheetName).Cells(FromRow + RowCount - 1, FromCol + ColCount - 1)
      sR = MC.Address() + ":" + EC.Address()
      GetTableRange = sR
    End Function
      '清除原数据
    Public Sub ClearOldData(SheetName, sR)
      Worksheets(SheetName).Range(sR) = ""
    End Sub