Запустите скрипт Python через Excel / VBA - PullRequest
0 голосов
/ 19 мая 2018

Я пытался найти решение этой проблемы целую вечность.У меня есть несколько скриптов Python, которые необходимо регулярно обновлять, и я хотел бы иметь возможность использовать макрос для этого.Прямо сейчас я дважды щелкаю файлы, и они запускаются через Shell без проблем.

Sub RunPyScript()

Dim Ret_Val As Variant
Dim command As String

command = Chr(34) & "C:\Users\Jon Doe\python.exe" & Chr(34) & " " & Chr(34) & "C:\Users\Jon Doe\" & "\Roto.py" & Chr(34)
Ret_Val = Shell(command, vbNormalFocus)

End Sub

Когда я пытаюсь запустить вышеупомянутый макрос, выглядит так, как будто он будет работать так же, как и при двойном щелчке, ноОболочка завершается до того, как скрипт будет выполнен (я думаю, что это проблема, а не положительная).Если бы кто-нибудь мог мне помочь, я бы очень признателен.

1 Ответ

0 голосов
/ 19 мая 2018
Dim objShell
Dim command as String       'use this declaration type for VBA (Access/Excel)
'Dim command                 'use this declaration type for VBS (Script), instead of the direct declaration like as "As String"

command = Chr(34) & "C:\Users\John Doe\python.exe" & Chr(34) & " " & Chr(34) & "C:\Users\John Doe\" & "\roto.py" & Chr(34)
Set objShell = CreateObject("WScript.Shell")

objShell.Run command, 1, True

'Settings for WindowStyle:
'     0 Hide the window (and activate another window.)
'     1 Activate and display the window. (restore size and position) Specify this flag when displaying a window for the first time.
'     2 Activate & minimize.
'     3 Activate & maximize.
'     4 Restore. The active window remains active.
'     5 Activate & Restore.
'     6 Minimize & activate the next top-level window in the Z order.
' *** 7 Minimize. The active window remains active.
'     8 Display the window in its current state. The active window remains active.
'     9 Restore & Activate. Specify this flag when restoring a minimized window.
'    10 Sets the show-state based on the state of the program that started the application.

Кстати, вы можете просто использовать 2x кавычки для вставки кавычек в строковую переменную, как я использовал их в своем предыдущем исходном коде.Например, StrVariable="""" дает результат ".Таким образом, строка для командной строки будет иметь вид:

command = """%USERPROFILE%\python.exe"" ""%USERPROFILE%\roto.py"""

, где результат:

"C:\Users\John Doe\python.exe" "C:\Users\John Doe\roto.py"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...