Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 271
1

Как запустить несколько макросов одновременно

28.12.2018, 00:48. Показов 5092. Ответов 21
Метки нет (Все метки)

Доброй ночи.
Скажите , если кто знает:

По изображенному коду - макросы запускаются по порядку - один за другим, а одновременно - в одно и то же время.

Visual Basic
1
2
3
4
5
6
Sub Запуск()
Макрос1
Макрос2
Макрос3
Макрос4
End Sub
Как запустить несколько макросов одновременно ?
Не по порядку - один за другим, а одновременно - в одно и то же время.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.12.2018, 00:48
Ответы с готовыми решениями:

Как связать несколько листов excel с использованием макросов
Здравствуйте,очень рассчитываю на вашу помощь. Я никак не могу найти нужную функцию или же написать...

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

Объединить несколько макросов в один макрос
Подскажите пожалуйста как объединить в один макрос несколько: 1 макрос. Sub...

Соединить несколько макросов в один (Excel)
Работаю с большими таблицами в excele, использую макросы. Что-то ищу в интернете готовое, что-то...

21
es geht mir gut
11226 / 4703 / 1178
Регистрация: 27.07.2011
Сообщений: 11,426
28.12.2018, 05:55 2
Создавать отдельные потоки, и в них запускать.
Но зачем?
0
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 271
28.12.2018, 09:36  [ТС] 3
SoftIce, как это сделать ?
0
es geht mir gut
11226 / 4703 / 1178
Регистрация: 27.07.2011
Сообщений: 11,426
28.12.2018, 09:54 4
Цитата Сообщение от yl3d Посмотреть сообщение
SoftIce, как это сделать ?
Если долго и упорно скакать с бубном, то можно в VBA сделать.
В других языках это делается намного проще, буквально в пару строк.

Но, скорее всего, Ваш вопрос можно решить по-другому. Вы просто "копаете не в ту сторону".

Зачем макросы одновременно запускать ?
1
11200 / 3571 / 636
Регистрация: 13.02.2009
Сообщений: 10,674
31.12.2018, 18:36 5
простой поиск по форуму находит тему
Маленькое продолжение темы "Аналог Excel-метода "OnTime"" или про многопоточность
0
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 271
31.12.2018, 21:52  [ТС] 6
SoftIce, зачем нужно одновременно запускать ?
Затем, что они должны сработать все разом.
Поэтому я и задаю этот вопрос.

Добавлено через 5 минут
Alex77755, вот наверное действительно - какая-то многопоточность тут нужна.
А как ее применить в моем примере, эту многопоточность ?
0
6823 / 2765 / 520
Регистрация: 19.10.2012
Сообщений: 8,432
31.12.2018, 21:58 7
Цитата Сообщение от yl3d Посмотреть сообщение
Затем, что они должны сработать все разом.
- идеальный ответ
Т.е. например все 4 макроса одновременно пишут в ячейку каждый своё значение, и Вы устраивает на это дело тотализатор?
1
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 271
01.01.2019, 09:47  [ТС] 8
Hugo121, Как запустить несколько макросов одновременно, с помощью многопоточности ?
0
Модератор
Эксперт Python
28590 / 15454 / 3053
Регистрация: 12.02.2012
Сообщений: 25,333
Записей в блоге: 4
01.01.2019, 13:15 9
Дверь и форточка. Если никак не удается проникнуть в дом, остановись и оглядись. Возможно, что ты пытаешься пролезть в форточку, когда рядом открытая дверь.
3
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 271
01.01.2019, 19:51  [ТС] 10
Catstail, нет.
Дверь по-прежнему закрыта.
Остается только форточка.

Как запустить несколько макросов одновременно, с помощью многопоточности ?
0
648 / 241 / 86
Регистрация: 28.10.2015
Сообщений: 509
01.01.2019, 23:45 11
Вам же дали ссылку на обсуждение:
Маленькое продолжение темы "Аналог Excel-метода "OnTime"" или про многопоточность
Разве из всего этого:
Кликните здесь для просмотра всего текста
Цитата Сообщение от The trick Посмотреть сообщение
Поток легко можно создать в DLL/OCX и т.п.
Цитата Сообщение от The trick Посмотреть сообщение
Как ты собираешься отлаживать многопоточный код в однопоточном отладчике?
Цитата Сообщение от StepInLik Посмотреть сообщение
А никак. Это возможно? Проверять код сотни и сотни раз ... ставить флаги, делить ресурсы, думать что где чем может закончиться ... думать головой и стать интерпретатором.

Не понятно, что даже для самых искушенных гуру возможность создания потоков в vba - это очень спорно и чаще всего остаётся теорией. The trick пишет, что поток легко создать в DLL/OCX и т.п.
Вот для этого человека собственно создание собственной dll/ocx не является сложностью. yl3d, а вы так можете? Если нет, то и многопоточность у вас не выйдет. Без обид, просто это задача мало кому по плечу даже из наиболее продвинутых.
Если хотите многопоточность, обратите взор на visual basic.net
Хотя возможно, что шанс создать многопоточность в vba есть. Ведь если многопоточность есть в .net, а .net, если всему верить, может быть прикручен к VBA. (гуглим "Excel-DNA", а также гуглим и "выкуриваем" всё по тематике ".net + vba").
Прислушайтесь к совету Catstailа: многопоточность если и вообще возможна, то крайне сложна, лучше ищите иные стратегии для своего проекта.
1
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 271
02.01.2019, 03:22  [ТС] 12
Святой НякаЛайк, ну тогда не одновременное срабатывание, а каждый - через полсекунды.

Это же не многопоточность.
0
648 / 241 / 86
Регистрация: 28.10.2015
Сообщений: 509
02.01.2019, 04:08 13
Цитата Сообщение от yl3d Посмотреть сообщение
а каждый - через полсекунды.
Сожалею. Можно предложить лишь метод ontime. НО! Но если ваш макрос работает допустим 5 минут, то всё равно сначала будет завершен этот макрос, а только потом запустится тот, который назначен по ontim'у.
Visual Basic
1
2
3
4
5
6
7
Sub Запустить_Вовремя() ' Процедура для запуска другой процедуры методом Ontime
    Application.OnTime Now + TimeValue("00:00:15"), "Mesaga"
End Sub
 
Sub Mesaga() ' Процедура, вызванная через Ontime
    MsgBox Format(Timer / 86400, "c"), , "Запущен мой макрос"
End Sub
Вот синтаксис для работы с методом Ontime. И да, это совсем не многопоточность. в ВБА она если и возможна, то мало кому "по зубам".
0
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 271
02.01.2019, 09:12  [ТС] 14
Святой НякаЛайк, ясно.
Ну так в том то, все и дело, что макросы выполняются длительностью - около минуты каждый. И нужно как-то не по 4 минуты в сумме - чтобы они шли, а пооперативнее - примерно что-то около минуты все вместе.
0
6823 / 2765 / 520
Регистрация: 19.10.2012
Сообщений: 8,432
02.01.2019, 09:16 15
За минуту можно миллион строк обработать...
Нужно было всёж сперва подробно ответить на первый заданный Вам вопрос.
0
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 271
02.01.2019, 09:56  [ТС] 16
Цитата Сообщение от Hugo121 Посмотреть сообщение
Нужно было всёж сперва подробно ответить на первый заданный Вам вопрос.
Ну так что ответить.
Для сокращения времени работы скрипта. Скрипты однотипные, но хотелось бы - чтобы выполнялись более менее одновременно.
0
Модератор
8387 / 3157 / 824
Регистрация: 22.02.2013
Сообщений: 4,694
Записей в блоге: 78
02.01.2019, 10:13 17
Цитата Сообщение от yl3d Посмотреть сообщение
Скрипты однотипные, но хотелось бы - чтобы выполнялись более менее одновременно.
Какие действия выполняются в макросах? Мб вообще нельзя их запускать одновременно к примеру если следующий макрос принимает на вход результат работы первого.
0
3388 / 2084 / 685
Регистрация: 02.11.2012
Сообщений: 5,453
02.01.2019, 10:13 18
покажите скрипты, может спецы подскажут как ускорить их (лучше в файле).
П.С. Хотя это уже другая тема.
0
3 / 3 / 1
Регистрация: 28.09.2015
Сообщений: 271
02.01.2019, 11:10  [ТС] 19
Vlad999, ну а как вы их ускорите ?
Их не нужно встраивать один в другой.

Количество этих однотипных скриптов - будет постоянно меняться.
Вот мне и нужно какое-то решение, чтобы скрипты запускались пока не отработал предыдущий скрипт.
0
1063 / 101 / 4
Регистрация: 19.12.2012
Сообщений: 444
02.01.2019, 13:09 20
Коллеги, а в чем вообще сложность?
Делаете головной модуль, контролируюший группу отдельных самостоятельных аппликейшенов ...
В каждом аппликейшене запускаете свою книгу и в ней - свой макрос/вычисление ...
Обмен данными и синхронизацию ... тоже, разрабатываете схему/протокол обмена данными через управляющее приложение ...
Если коллеги подскажут как организовать сервер DDE, то на этой основе можно вообще организовать полноценную быструю эмуляцию многопоточности
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.01.2019, 13:09

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как сделать, чтобы в файле Excel могли работать несколько пользователей одновременно по сети?
Как сделать, чтобы в файле Excel могли работать несколько пользователей одновременно по сети, а то...

Объединение макросов и несколько классов в один файл
Здравствуйте! У меня есть 2 макроса и 2 класса, которые необходимо использовать вместе, а...

Открыть одновременно несколько копий одной формы
Затык: нужно из одной формы сделать 4 или 6 копий и чтобы они открывались одновременно. Пока 2...

Сравнение несколько колонок одновременно и вывод результата
У меня есть несколько колонок 1) Данные для сравнения UPRN Floor Code Room 12555 1 HA...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.