Если я вас правильно понимаю, вы хотели бы вызвать скрипт Python и передать аргумент, а затем, возможно, обработать возвращаемый объект данных?Если вы используете Windows и имеете среду сценариев VBA, то, возможно, вы могли бы использовать объект WSH (хост скрипта Windows) для запуска скрипта.Сначала объявите объект
Dim wsh As New IWshRuntimeLibrary.WshShell 'early binding
Dim wsh As Object
Set wsh = CreateObject("Wscript.Shell") ' late binding
И используйте метод Run () для объекта, передавая объект и аргумент в виде строки.в этом примере я вызываю powershell и передаю скрипт-файл (run.ps1) в качестве аргумента.Я просто вызываю метод, но не получаю возвращаемый объект из скрипта.
res = wsh.Run("powershell path\run.ps1", WindowStyle:=False, WaitOnReturn:=True)
If res = 0 Then
Call MsgBox("script ran successfully")
Else
Call MsgBox("script ran unsuccessfully")
End If
В этом примере, с другой стороны, я использую метод Exec для извлечения возвращаемых данных в виде json
res = wsh.Exec("powershell path\run.ps1").StdOut.ReadAll()
Debug.Print res ' return data:
returnObject:
{
title: 'theTitle',
value: 'the value',
status: 'status'
}
run.ps1 в основном возвращает строку:
return "returnObject:
{
title: 'theTitle',
value: 'the value',
status: 'status'
}"
Редактировать: для вызова файла скрипта Python используйте python
или py
вместо PowerShell
res = wsh.Exec("python path\pythonfile.py").StdOut.ReadAll()