Shell Object с минимальным выполнением в VBA - PullRequest
1 голос
/ 18 февраля 2020

Я хотел бы свести к минимуму выполнение окна оболочки и выполнение сценария python с кодом ниже:

Sub RunPython()
    Dim oShell, oExec as Object
    Dim sriptPath, scriptName, datas, oCmd as String
    Dim weekNumber as Integer

    Set oShell = CreateObject("WScript.Shell")
    oCmd = "python.exe " & scriptPath & scriptName & " " & datas & " " & Str(weekNumber)
    Set oExec = oShell.Exec(oCmd)
    'We are waiting for the Shell script to be executed'
    While oExec.Status = 0
    Wend
    MsgBox "Hagrid notebook update completed"
End Sub

Крайне важно сохранить информацию о состоянии oExec объект. Я пытался вставить понятие vbMinimizedFocus, но оно не работает. У вас есть идея, чтобы решить эту трудность?

1 Ответ

0 голосов
/ 18 февраля 2020

Согласно моим тестам, обе эти версии делают .Status доступным.

Опция 1. Использование pythonw.exe вместо python.exe - это не минимизирует окно, но работает полностью в фоновом режиме.

Вариант 2. Вы можете добавить 2 строки в начале сценария python:

import ctypes
ctypes.windll.user32.ShowWindow( ctypes.windll.kernel32.GetConsoleWindow(), 6 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...