Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
20.04.2024, 13:17:43

Войти
Название темы должно отражать её содержание.
Темы типа "ПОМОГИТЕ!!!", "Срочно!", "Не получается сделать", "Нужна помощь" и т.п. будут удаляться без объяснения причин
33 242 Сообщений в 5 457 Тем от 6 758 Пользователей
Последний пользователь: Сергей2662
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Полезные решения
| | |-+  Параллельное выполнение макросов
Страниц: [1]   Вниз
Печать
Автор Тема: Параллельное выполнение макросов  (Прочитано 8290 раз)
0 Пользователей и 1 Гость смотрят эту тему.
McConst
Постоялец
***

Репутация: +1/-0
Офлайн Офлайн

Сообщений: 238


Просмотр профиля E-mail
« : 23.02.2017, 12:12:43 »

Где-то прочитал, что макросы параллельно выполнять нельзя. По жизни так оно почти всегда и было. Часто, пока один макрос скачивает из интернета в эксель базу данных, из-за этого не удается работать с макросами в других книгах. Приходилось останавливать закачку, открывать другую книгу, выполнять иную работу, связанную с макросами, затем по окончании возобновлять прерванные закачки. Или пока один макрос делает сложные расчеты, невозможно вообще открыть другую книгу эксель. Таких примеров было множество.
Недавно посетила мысль, что проблема в том, что приложение Excel, если оно уже открыто, пытается при двойном клике в своем же процессе открыть и новую книгу. А если открывать книги в разных процессах, тогда проблем  с параллельно работающими макросами быть не должно.

Проверил свою мысль в офисе 2003 на Win XP. Все макросы в разных книгах отлично работают параллельно. Чтобы книги Excel открывались не в одном, а каждая в своем индивидуальном процессе, сделал так, как предложил гугл.

Открыл "Мой компьютер/сервис/свойства папки/типы файлов
Нашел расширение .xls
Для него нажал кнопку "Дополнительно"
В разделе "Действия:" выбрал пункт меню "Открыть" и нажал кнопку "Изменить"
В разеделе "Приложение, выполняющее действие:" стояла такая запись
"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" /e
Я добавил в конце параметр "%1", получилась следующая запись
"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" /e "%1"
В интернете советовали убрать птичку DDE, я так и сделал. Хотя, при написании этого поста я повторно повторил действия, птичка оказалась вновь установлена. Возможно, ее наличие/отсутствие не важно.

Теперь все макросы у меня работают параллельно. Думаю, эта идея может пригодится для тех, кто хочет распараллелить расчеты сложных вычислений в Excel. Нужно ещё обкатать детали самому, но если даже не получится выполнять макросы в параллель через CreateObject("Excel.Application"), то запускать параллельную обработку расчетов через Shell Workbook.xls вполне реально. Параллельные процессы можно сделать невидимыми как минимум через WinAPI.
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru