Приостановить код Python3 до завершения макроса Excel - PullRequest
0 голосов
/ 31 января 2020

Итак, у меня есть очень большая книга Excel, полная макросов, и я автоматизирую использование этой книги с помощью python3 и pywin32. Мне было интересно, если кто-нибудь знает, как приостановить сценарий python во время выполнения макроса VBA?

1 Ответ

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

Три способа, которыми я мог бы предложить вам подойти к этому:

1. Используйте файл, чтобы сообщить Python, что VBA завершил свою работу

Для этого ваш VBA-скрипт должен создать пустой файл (может быть .xlsx)

import os.path
import time

"""
First block of code here
"""

while os.path.isfile('signal.xlsx') == False:
    time.sleep(10)

"""
Second block of code here
"""

2. Подсчитайте, сколько времени потребуется вашему скрипту VBA для запуска

Если ваш скрипт меняет некоторые аспекты рабочего листа, выполните прогон с более короткой версией, подсчитайте, сколько времени это займет, а затем умножьте время выполнения по всем итерациям, которые ему придется пройти.

Дайте Python подождать столько секунд, прежде чем запускать следующие блоки.

import time

time.sleep(seconds)

3. Используйте Python Scheduler

Вы также можете использовать проект Schedule для запуска скрипта в определенное время, если вы считаете, что безопаснее играть его, например, вечером.

Я бы отослал вас к https://pypi.org/project/schedule/, поскольку у него очень простой пример использования.

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