Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2017, 08:57   #1
andbrother
Пользователь
 
Регистрация: 03.05.2012
Сообщений: 10
По умолчанию Фоновое выполнение макроса

Добрый день! Подскажите, возможно ли запускать макрос так, чтобы Excel оставался доступным для работы?
Есть макрос, который открывает файл (примерно 13Мб), работает там с большим массивом данных и снова его сохраняет. Все это занимает некоторое время. Есть возможность во время работы макроса продолжать работать с Excel в посторонних файлах, открывать новые? А макрос путь потихоньку работает с низким приоритетом в фоне и не мешает.
Пробовал поиск, но либо не то, либо я не понимаю, что нашел)))
andbrother вне форума Ответить с цитированием
Старый 28.02.2017, 09:35   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Макрос запускать в отдельном процессе.
Открывать файлы и работать в другом. С открытием придётся потрудится, чтоб файлы открывались в нужном процессе.
Но может проще оптимизировать тот макрос, чтоб он работал не время, а секунды?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.02.2017, 10:36   #3
andbrother
Пользователь
 
Регистрация: 03.05.2012
Сообщений: 10
По умолчанию

Оптимизировать макрос можно только в одном - заменив сортировку пузырьком более быстрым методом. Остальное вряд ли - только если менять логику работы, чего не хочется. Не знаю, много или мало считается - но 1500 строк в макросе. Достаточно разношерстные операции, много конкретных ячеек и диапазонов.

Про фоновое выполнение интересно еще и для собственного развития. Но если это ОЧЕНЬ сложно... Т.е. я так понимаю, средствами самого VBA никак, и надо использовать внешние системные функции?
andbrother вне форума Ответить с цитированием
Старый 28.02.2017, 12:50   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

13Мб - это повод для медленной работы
а
1500 - строк это скромное число, обработка такого количества данных обычно происходит моментально
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.02.2017, 12:54   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Как я понял - 1500 строк кода
А значит там селекты, активации, и даже может быть много много SmallScroll...
Честно - не хочется уже смотреть...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.02.2017, 13:30   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

эт точно
разобрать 1500 строк грамотно написанного кода - вполне допустимо,
а разбирать 1500 строк склеенных из записей макрорекордера - это неблагодарное занятие и, однозначно, удовольствия от этого не получишь...
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.02.2017, 13:52   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Off//
Кстати один из таких моих самых первых кодов с селектами и активациями, и даже может с SmallScroll работал у коллеги довольно долго, даже наверное пока задача не отпала.
И оптимизировать не просил (а я и не рвался особо) - говорит завораживает и успокаивает
Потому что я там по неопытности и обновление экрана ещё не отключал.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.02.2017, 14:16   #8
andbrother
Пользователь
 
Регистрация: 03.05.2012
Сообщений: 10
По умолчанию

Я и не прошу в коде разбираться (сам с трудом отслеживаю уже), я про процесс выполнения макроса спрашивал))) Может хотя бы ссылку дадите (я пытался искать), или названия функций (или что там должно быть). Или... я правильно понимаю, что средствами самого VBA никак, и надо использовать внешние системные функции?

PS> Селекты и активации я использовал 5 лет назад, и тоже нравилось смотреть)) Сам макрос не из макрорекодера, вручную набирал(( Просто действий много и не с одном листом, не с простой заменой чисел. Сама логика(методика) обсчета сложная и специфичная. Никаких активаций и прочего (SmallScroll не знаю даже), только чтение в массив, большая работа с ним и запись обратно (типа Workbooks(FN).Worksheets(NS).Range( "A10:EW1017").Value = Gf). Ну и обращения к конкретным ячейкам с итоговыми значениями. Но по времени они не являются определяющими. Основное время - открытие, сохранение файлов и, конечно же, работа с массивами в памяти.

Последний раз редактировалось andbrother; 28.02.2017 в 14:18.
andbrother вне форума Ответить с цитированием
Старый 28.02.2017, 14:46   #9
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Вы можете попробовать запустить 2-й (и сколько угодно еще) экземпляр Excel (это не вторая, третья книга открытая в Excel - я говорю именно о втором экземпляре программы загруженном в память, в ХР это точно работало)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.02.2017, 18:40   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

1) запускаем новую копию Excel
Обычно это удаётся через Пуск - Программы - Microsoft Excel

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

3) в одном запускаем макрос, в другом занимаемся своими делами
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Остановить выполнение макроса Svetofor-ed Microsoft Office Excel 1 08.09.2014 10:52
Выполнение макроса PowerPoint Vladislava-smile Microsoft Office Excel 0 23.05.2014 03:00
Выполнение макроса при фильтре REztor Microsoft Office Excel 3 31.12.2013 23:23
Повторное выполнение макроса Jaroslav Microsoft Office Excel 3 26.07.2009 10:12
Выполнение макроса во всех листах Bu$ter Microsoft Office Excel 18 14.11.2008 14:34