работать в Excel, пока работает макрос, как выполнить эту задачу? - PullRequest
0 голосов
/ 07 марта 2020

Как мы знаем, обычно после запуска макроса и до до завершения макроса мы ничего не можем сделать в этом документе Excel. Это иногда немного неудобно, и ( давайте представим ) Я не хочу долго ждать, и было бы неплохо сделать что-то параллельно в одном документе. Является ли это возможным? Если ДА, как?

Ответы [ 5 ]

1 голос
/ 07 марта 2020

Нет, это невозможно.

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

0 голосов
/ 07 марта 2020

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

Opening a second instance of Microsoft Excel causes Windows to load a new copy of the program into memory. This can be useful when you find yourself waiting a long time for Excel to complete complex operations in a large spreadsheet. Opening a second instance of Excel allows you to work with on a different spreadsheet while the first instance of the program is busy.

Desktop View
1.    Open your first instance of Excel, and then right-click the Excel icon on the Desktop taskbar.
2.    Hold down the "Alt" key and select "Excel 2013" from the pop-up menu.
3.    Continue holding down the "Alt" key until you see a prompt asking you if you want to start a new instance of Excel. Click "Yes" to open the new instance.

Start Screen
1.    Open your first instance of Excel, and then right-click the Excel tile on the Start screen.
2.    Hold down the "Alt" key and click "Open New Window" on the Start screen taskbar.
3.    Continue holding down the "Alt" key until you see a prompt asking you if you want to start a new instance of Excel. Click "Yes" to open the new instance.

Теперь, когда вы открываете диспетчер задач, вы видите два запущенных экземпляра Excel.

enter image description here

Вы можете запускать эти два задания / задачи в этих двух экземплярах Excel, все параллельно !!

0 голосов
/ 07 марта 2020

Вставьте DoEvents между вашим кодом.

Sub test2()

    Do
     '.....

     DoEvents '<~ While the macro is running you can do other things in the Excel document.
    Loop
End Sub
0 голосов
/ 07 марта 2020

Возможно, вы можете попытаться что-то сделать, используя Application.ontime , но вам следует стараться не использовать макросы, в которых будут выделены ячейки, листы, например: Sheets (1) .Activate, Range (" A1" ). Выберите. Используя Application.ontime , вы можете, например, сделать хронометр и продолжить выбор или вставку значений в ячейку.

0 голосов
/ 07 марта 2020

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

https://analystcave.com/excel-multithreading-vba-with-vba-worker-threads/

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