假设我们在excel文件的同一文件夹中有一个Julia脚本'test.jl'。是否可以使用VBA从Excel调用此Julia脚本?如果是,VBA代码应该是什么?如果没有,还有其他方法吗?感谢。
答案 0 :(得分:1)
您当然可以使用Shell()
的命令行调用从VBA调用任何解释语言脚本。虽然不熟悉Julia,但下面是VBA调用Python,PHP和R脚本的示例。
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
另外,如果您将上述可执行路径保存为environmental path variables,则可以缩短该行:
Shell "python C:\Path\To\PythonScript.py", vbNormalFocus
Shell "php C:\Path\To\PHPScript.php", vbNormalFocus
Shell "RScript C:\Path\To\RScript.R", vbNormalFocus
如果我的猜测是正确的,只需找到Julia可执行文件和特定脚本,如果空格位于任一路径中,请确保添加引号,如下所示:
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
如果您需要进行故障排除/调试,请始终知道您构建的任何字符串命令行应该在命令提示符,PowerShell或任何其他命令行解释器中工作。