Страницы: 1
RSS
Автоматическое создание кнопок запуска макроса
 
Добрый день, уважаемые форумчане!
Передо мной стоит задача ежемесячного списания материалов со складов в зависимости от количества и объема, произведенных в прошедшем месяце ремонтов.
К сожалению, поставщики материалов не утруждают себя написанием списков в таком же виде в котором мы подаем заявку. Т.е. мы, к примеру, заказываем "светодиоды красные" и нам их привозят, но по документам они проходят как "арматура светоизлучающая". Приходится вручную искать соответствующие материалы, копировать их из одного файла в другой, вручную вносить в счетчик количество уже использованных материалов и т.д. Это огромное количество телодвижений я хочу автоматизировать. И если консолидацию складов(материальных отчетов) в один файл я осилил средствами VBA(так же как автоматизацию счетчика и перевод из одной размерности в другую), то с построчным переносом возникли проблемы. Как я вижу решение этой проблемы – при копировании мат.отчетов в один мегаотчет(склад), макрос, переносящий таблицы должен создавать для каждой позиции кнопку, на которую уже заранее повешена процедура, вызывающая другой макрос, который отвечает за копирование заданного диапазона в другой открытый файл на определенное место(к примеру, в активную ячейку). Имена открытых файлов зависят от ремонтов, а значит прописать чёткий путь к ним нельзя. Копировать нужно именно в другой открытый файл. Не ясно как помещать эти кнопки ровно в соответствующие ячейки(второго столбца матотчета) и назначать им код(процедуру) в автоматическом режиме. Макрорекордер мне ничем помочь не смог, т.к. записывает лишь рисование кнопки. Прошу знающих людей подсказать способы решения данной проблемы.
Я почему так подробно всё расписываю – возможно, кто-то увидит более рациональный способ списания, который я не вижу.

Прилагаю 2 файла: Матотчет в котором уже собраны все склады и в котором надо помещать кнопки во втором столбце, напротив каждой позиции. И один из ремонтов, куда по нажатию нужной кнопки, должна копироваться соответствующая позиция из матотчета.  
 
Для начала ознакомьтесь с Правилами о поменяйте в своём профиле отображаемое имя - все последующие сообщения будут уже с ним.
 
1. Зайдите в профиль и смените отображаемое имя. Сейчас оно у Вас в виде e-mail
2. http://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=64565&TITLE_SEO=64565-makros-kop...
Это ссылка с аналогичной проблемой. Код копирования данных в активную строку есть - можно посмотреть как это выглядит.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, спасибо за ссылку. Проблемы с копированием в активную ячейку нет. Меня интересует именно прорисовка множества кнопок на листе и закладывание в них рабочего кода. Идея с кнопкой на закрепленной строке неплоха, но если мне надо переместить, допустим 1000 позиций, то кликов будет 2 тысячи. Так что, пусть это будет запасной вариант
 
Цитата
Anton написал: но если мне надо переместить, допустим 1000 позиций, то кликов будет 2 тысячи
А создавать 1000 кнопок лучше? Помечайте каким-либо образом строки, которые нужно обработать и одним нажатием кнопки...
 
Юрий М, с точки зрения использования ресурсов, это, конечно, не самый лучший вариант. Но он предпочтительнее с точки зрения удобства. Пусть лучше напрягается графический процессор, чем я.
А по вопросу пометок - довольно часто один и тот же материал используется несколько раз. Мне проще отработать его сразу и больше не возвращаться к этой позиции, чем ставить несколько меток, а потом руками проверять готовый файл на соответствие размерностей
 
Почитайте это - разве неудобно? )  
 
Юрий М, Ок. Допустим у меня на складе есть позиция "Ветошь" в килограммах. В ремонте использовалось три позиции:
"ветошь" в т,
"сальниковая набивка" в шт.
"лента прокладочная" в м.

Под всё это подходит Ветошь. Либо начальник сказал, что "подходит и не колышет"
Если в тексте позиции содержится формула перевода из размерности в размерность - мой макрос выполняет перевод, но если формулы нет, то перевод выполняю я методом открывания справочника или более брутальным методом похода на склад и взвешиванием/измерением контрольного образца.
Т.о. мне надо несколько раз за ремонт поставить в соответствие позицию "Ветошь" из матотчета. Мне не ясно каким образом можно дать понять макросу что ветошь надо копировать несколько раз(несколько меток?), в какие места копировать, если они разнесены по ремонту и не сортируются никаким образом и как обработать несоответствие размерностей.
Но! Если делать перенос по кнопке, то я могу в режиме реального времени обозначать ему места для вставки путём выделения ячейки и самостоятельно исправлять размерность(руками или подручными методами)
 
Да я же Вас не уговариваю - предлагаю вариант. Делайте, как считаете нужным.
 
Не, не, я благодарен! Не подумайте. Метод, действительно, интересный и красиво реализован, просто он не подходит конкретно к моему случаю. Что, конечно, не помешает мне его запомнить и использовать при случае, в какой-нибудь другой задаче
 
Что касается путей к нескольким файлам, пути которых постоянно разные, могу предложить сделать обзор файлов на форме и выбрать все нужные, только я вот не понял сколько подобных файлов нужно обработать..(Будет ли этот вариант определения путей удобным)
 
Цитата
ALFA написал: сколько подобных файлов нужно обработать
от 3 до 25 каждый месяц. Может и больше, если будут вводить в строй новые объекты
 
В общем вот пример обзора, может пригодится в этом деле
 
Цитата
Anton написал: но если мне надо переместить, допустим 1000 позиций, то кликов будет 2 тысячи
М-да...Т.е. Вы полагаете, что лучше создать 1000 кнопок, чтобы внутри кода потом еще определять к какой строке принадлежит кнопка? Это усложнит код. Плюс надо учитывать, что кто-то может случайно сдвинуть кнопку - тогда она будет копировать уже другую строку. Либо для каждой кнопки свой код - что еще хуже. 1000 кнопок и 1000 разных кодов - это уже неизбежно повлечет глюки файла.

Да, еще код можно повесить на горячие клавиши - кнопки вообще не нужны будут. Выделили ячейку, нажали сочетание клавиш, все скопировалось...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1
Наверх