从Excel / VBA调用Scala函数

菲尔-ZXX

我知道使用C ++可以创建包含某些功能的DLL文件,然后可以将其导入Excel(例如,通过VBA)。让我们采用以下C ++函数

double __stdcall square_it(double &x)
{
    return x*x;
}

我们假设它已合并在square.dll中,因此我们可以使用以下VBA导入

Declare PtrSafe Function square_it Lib "square.dll" (ByRef x As Double) As Double
Private Sub TestSub()
    MsgBox square_it(4.5)
End Sub

所以我的问题是:是否可以在Scala中编写函数,然后以类似的方式VBA调用它

奥利维尔·布兰维林

Scala与Java并没有什么不同,并且正在研究Java问题,例如可以在VB.net程序中使用Java库吗?从VBA / VBScript / Visual Basic Classic调用Java库(JAR)时,没有很好的解决方案来获得与VBA / Java或VBA / Scala中的VBA / C ++相同级别的集成。

您始终可以使用任何外部通道在VBA和Scala之间进行通信,例如在Shell,文件系统甚至http之间进行通信,但这不会像您的VBA / C ++示例那样简单有效。

这是通过shell进行通信的样子:

在example.scala中:

object Example {
  def main(args: Array[String]): Unit = {
    val d = args.head.toDouble
    println(d * d)
  }
}

在example.vba中:

Module Example
  Sub Main()
    Dim command As String 
    command = "scala /path/to/example.scala 123"
    Range("A1").Value = CreateObject("WScript.Shell").Exec(command).StdOut.ReadAll
  End Sub 
End Module

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章