从Excel VBA调用Julia脚本

假设我们在一个excel文件的同一个文件夹中有一个Julia脚本“test.jl”。 使用VBA可以从Excel中调用这个Julia脚本吗? 如果是的话,VBA代码应该是什么? 如果不是,还有其他方法吗? 谢谢。

您可以使用命令行调用Shell()调用VBA中的任何解释语言脚本。 虽然不熟悉Julia,但下面是调用Python,PHP和R脚本的VBA示例。

 Shell "C:\Path\To\Python.exe C:\Path\To\PythonScript.py", vbNormalFocus Shell "C:\Path\To\PHP.exe C:\Path\To\PHPScript.php", vbNormalFocus Shell "C:\Path\To\RScript.exe C:\Path\To\RScript.R", vbNormalFocus 

另外,如果将上面的可执行path保存为环境pathvariables ,则可以缩短行:

 Shell "python C:\Path\To\PythonScript.py", vbNormalFocus Shell "php C:\Path\To\PHPScript.php", vbNormalFocus Shell "RScript C:\Path\To\RScript.R", vbNormalFocus 

如果我的猜测是正确的,只需findJulia可执行文件和特定的脚本,确保如果空格在任一path中,则如下所示添加引号:

 Shell "C:\Path\To\Julia.exe C:\Path\To\Julia\Script.jl", vbNormalFocus Shell "Julia ""C:\Path To\Julia\Script.jl""", vbNormalFocus 

对于更多的子线程处理,你有更多的控制,返回代码,甚至传递参数的能力都使用VBA的Shell对象。 下面传递两个可变参数:

 Dim shell As Object Dim waitTillComplete As Boolean: waitTillComplete = True Dim style As Integer: style = 1 Dim path As String Dim errorCode As Integer Dim var1, var2 As Double var1 = Range("A1").Value var2 = Range("A2").Value Set shell = VBA.CreateObject("WScript.Shell") ' BUILD COMMAND LINE STRING W/ WORKBOOK LOCATION AND ARGS path = "Julia " & ActiveWorkbook.Path & "\JuliaScript.jl" & " " & var1 & " " & var2 ' RUN COMMAND LINE retVal = shell.Run(path, style, waitTillComplete) Set shell = Nothing 

如果您需要进行故障排除/debugging,请始终知道您构build的任何string命令行应该在命令提示符,PowerShell还是任何其他命令行解释器中工作。