我知道使用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] 删除。
我来说两句