Позвонить на Python из VBA (Winwrap) - PullRequest
0 голосов
/ 22 октября 2018

Я использую программное обеспечение с интерфейсом программирования на основе VBA / Winwrap Basic.Я хотел бы использовать некоторые библиотеки машинного обучения из Python, но я не уверен, как его эффективно построить.

Программное обеспечение представляет собой программу динамического моделирования.Каждые несколько временных шагов я хотел бы обновлять (обучать) искусственную нейронную сеть (ANN) новыми данными, используя библиотеки Pyhton.Я вижу, что можно вызвать скрипт (как в Как вызвать скрипт Python в Excel VBA? ).Поскольку мне пришлось бы вызывать скрипт каждые несколько раз, я не уверен, как обращаться с объектом ANN.Каков наилучший способ реализовать это?

1 Ответ

0 голосов
/ 13 ноября 2018

Если я вас правильно понимаю, вы хотели бы вызвать скрипт 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...