Добрый вечер! Имеется файл эксель, с большой базой данных Для обработки данных написано порядке 3-4 тыс макросов (почти все однотипные и короткие). Все что сделано-отлично работает Однако Надо написать еще 7-8 тыс макросов, но Визуал байзик выдает ошибку, что лимит макросов исчерпан. из этого встает 3 вопроса: 1. Каким образом эксель считает что есть лимит по макросам-здесь дело в количестве макросов, или в его длине? Для экселя разница есть 100 больших макросов, или 1 тыс но маленьких? 2. что надо сделать чтобы можно было больше макросов написать? (оперативку уже увеличил, там порядка 32 гб ддр4, эксель стоит 64 битный) 3. Какой программой можно заменить если макросов так много, а эксель видимо не может их осилить (я просто кроме экселя и ворда других программ не знаю, может Acces нужен или MySQL?)
Подозреваю что про такой лимит даже авторы Экселя не знают Заменить можно хоть миллионом скриптов vbs - но зачем столько макросов? Куда? Нельзя написать ну десяток процедур с параметрами? P.S. ещё вариант - подгружать и использовать внешние скрипты используя CreateObject("scriptcontrol")
имеется исходный файл формата эксель после запуска прописанного макроса получается вот такая выборка (файл москва реестр pdf). Что делают макросы. Открываем файл эксель, макросы меняют столбцы местами, выбирает оттуда все закупки, которые относятся к москве, делает затем фильтр по ценам, и сохраняют в формате pdf. К примеру для москвы делается порядка 30-40 макросов. И так-делается для всех регионов, их порядка 100. не знаю как это все оптимизировать))
vikttur написал: Оптимизация - не в этой теме. Вы спросили о количестве, ответ получили.
Про количество ответ я не получил. Участники форума задали мне несколько вопросов, на них я ответил, получается ответив на вопросы я затронул оптимизацию? Мне молчать надо было? Я новичок на форуме, и не сильно разбираюсь во многих тонкостях.
Если техзадание - то в раздел платных заказов. Вряд ли кому-то будет интересно разбираться в Вашем коде, править его, теряя на эту уйму времени. Здесь помогают по конкретным вопросам.
dadalsa написал: Если не поняли - количестко макросов неограничено. Объем данных ограничен оперативной памятью компьютер
Тут я с Вами соглашусь только отчасти 1. Было два компа, у одного 3 гб оперативки, у второго 16 гб при количестве 5 тыс макросов обе машины стали выдавать ошибку что макросов слишком много, уменьшил до 4,5 тыс, комп на котором 16 гб, уже стал норм воспринимать, а там где 3 гб, начал так же писать про ошибку. Снизив количество макросов до 4 тыс, оба компа уже норм воспринимали. Если все строго привязано к оперативной памяти, получается что комп где 16 гб должен был осилить около 20 тыс макросов
2. так же никто не сказал что есть само ограничение по макросам-это количество макросов или же знаков в макросе? Представьте себе ситуацию что у меня не 5 тыс макросов, а 1 макрос но в котором столько же символов, как в тех 5 тыс макросах. Эксель так же будет выдавать ошибку?
dadalsa написал: Тут я с Вами соглашусь только отчасти
А я вообще с Вами не соглашусь. Может быть написано 5000 макросов, но в данный момент времени один работающий вешает компьютер. Многое зависит от данных, от того, как их обрабатывают, от применяемых библиотек и т.д.
Цитата
так же никто не сказал что есть само ограничение по макросам-это количество макросов или же знаков в макросе?
Вы о количестве знаков не спрашивали. Где-то встречал обсуждение о размере кода в модуле, но на количество макросов... да хоть миллион пишите )
Юрий М написал: Если размер кода превышен, то Excel сообщит, что код очень длинный.
Да указанные вами детские вопросы эксель мне часто писал когда эти макросы строчились)))))) Тут как раз вопрос в количестве и размере макроса по количеству символов. макрос может содержать 3 строки, а может содержать 1000 строк. Вопрос как раз в том-вылетающая ошибка что макросов слишком много касается количества общих символов, или количества макросов?
В более ранних версиях Visual Basic накладывались ограничения на такие параметры кода, как длина имени переменной, количество переменных в модуле и размер модуля. В Visual Basic 2005 эти ограничения были ослаблены, предоставляя большую свободу в написании и упорядочении кода.
dadalsa, я никогда не встречал ограничения именно на КОЛИЧЕСТВО МАКРОСОВ. Правда, я и не делал в одном проекте ТАКОГО количества процедур )) Но 3-4 (7-8) тысяч макросов - это явный перебор! )
vikttur написал: А я вообще с Вами не соглашусь. Может быть написано 5000 макросов, но в данный момент времени один работающий вешает компьютер. Многое зависит от данных, от того, как их обрабатывают, от применяемых библиотек и т.д.
Дело в том, что все эти макросы однотипные. вешаться там нечему, когда макросов было 2 тыс никаких ошибок не вылезало что макросов много. а тут взяли, их тупо по количеству увеличили, так они сразу и встали).
Про колиечтсво символов я указал в самом первом вопросе, просто коряво спросил)
Юрий М написал: я никогда не встречал ограничения именно на КОЛИЧЕСТВО МАКРОСОВ. Правда, я и не делал в одном проекте ТАКОГО количества процедур )) Но 3-4 (7- тысяч макросов - это явный перебор! )
я понимаю что это перебор, но вы бы видели как сервер их строчит)))) из одного эксель файла получается около 400 файлов в формате pdf Обработка делается около 30 минут (с оперативкой 32 гб и ddr4). ранее стоял комп с 3 гб, так он 4 часа возился
Можно написать 400 макросов, а можно один, где цикл от 1 до 400 выполнит 400 раз эту операцию )) Но я не знаю, что там у Вас конкретно делают эти 3000 макросов.
И зачем Вам столько файлов .pdf? Вам, похоже, не только макросы нужно оптимизировать, но и подход к самой работе с данными. Хранением/обработкой/выводом
Согласие есть продукт при полном непротивлении сторон
Sanja, не нужно провоцировать ) Здесь разговор о количестве.
dadalsa, чем ограничено количество тумбочек в Вашей квартире? Формалиьно - ничем. Если квартира безразмерная и тумбочки миниатюрные ) А вообще: размером тумбочки, объемом квартиры, но главное - здравым смыслом. Последнее - о клонировании кода.