Интерес – это то, что движет прогрессом.
Всегда интересно узнать что-то новое, особенно, когда ты что-то уже слышал об этом или знал. Мне часто приходилось использовать понятие, сформулированное ещё, наверное, Пифагором, когда он говорил о том, что он знает, что он ничего не знает. На эту тему можно вспомнить и одного из религиозных деятелей поздних времён Римской империи, когда он о христианской религии говорил, что верит, потому что абсурдно. Незнающему человеку это не понятно.
Если обозначить знание человеком в виде точки или круга, а незнание всё за границей этого круга, то самый знающий всё человек – это идиот.
Теперь об Excel. На одном из форумов (Киберфорум) меня зацепил какой-то простой вопрос и ответ на него показался действительно непонятным или неполным, или реализованным в коде с недомолвками.
Перед этим я вновь заинтересовался Power Query. Ранее этот вопрос лучше был рассмотрен у Павлова на его сайте. Оказалось, что сейчас не только у Николая это можно посмотреть, но есть много литературы. Power Query хорош для постоянного использования, но мне это не нужно, Но у Павлова есть на сайте хорошие ссылки. Они меня заинтересовали. Ссылок много, Меня же заинтересовали только две из них. Одна из которых на сайт с информацией «Хитрости VBA” на Excel_VBA. Сайт содержит действительно много прекрасных примеров, которые можно использовать в своих проектах. Разбирать примеры хорошо, когда для них есть описание и способы применения, и файлы Excel с этими макросами. Но ведь макросы лучше всего запускать непосредственно с рабочего листа с помощью кнопок. А как сделать так, чтобы программа открывала нужный макрос в нужной книге и показывала результаты своей работы?
Во-первых надо подготовить сам файл с макросом и данными для обработки.
Во-вторых желательно запускать каждый макрос с примером через кнопки, выведенные на лист Excel.
В-третьих необходимо сохранять исходный обрабатываемы файл с примерами в желательно неизменном виде.
Следовательно, лучше всего добавлять в обрабатываемый файл новый лист и создавать на нем кнопки запуска нужных макросов.
Но ведь сначала надо узнать какие макросы есть в открываемой книге. Затем имена этих макросов присвоить кнопкам запускам. Хорошо бы также знать побольше об этих запускаемых макросах из комментариев. А как их поместить и где? Как найти эти комментарии в тексте обрабатываемых макросов? Поэтому я решил комментарии до 2-х строк располагать сразу после наименования макроса (Программы Sub). Причём для упрощения сам текст макросов сначала записывается на добавленный рабочий лист основной программы, а потом лист удаляется. Хорошо бы знать и координаты кнопок на будущее. (Кнопки добавляются по ширине 2-х ячеек листа). Не лишним будет попытаться и разместить некоторый код VBA средствами же VBA при наведении курсора мыши на кнопку на листе (На эту тему есть прекрасные примеры, в том числе и у Уокенбаха). У меня кнопка пока лишь меняет цвет. Так и появилась идея этой небольшой разработки в Excel.
Есть небольшой нюанс при обработке макросов считываемой книги. Часто не все макросы нужно обрабатывать, а, возможно, лишь выборочно. Значит нужна дополнительная форма для выборки всех модулей или некоторых. А как сделать автоматическое удаление некоторых выводимых сообщений в автоматическом режиме? Как реализовать задержку? Мелочи вроде.
Когда делаешь что-то для себя или для использования и другими, то это две больших разницы. Желательно, конечно, всегда писать программы изначально понятными для себя и других, и без ошибок.
Теперь об информации в папке по ссылке.
Папка содержит некоторые примеры с сайта Excel – VBA. Примеры пронумерованы. В 2-х первых подготовлены комментарии в макросах.
MZTools – Очень полезная утилита для тех, кто программирует на VBA.
Файл Хитрости_выполнения_ кода_VBA.docx содержит текст примеров с сайта Excel – VBA. Хитростей, конечно, намного больше.
Имеются некоторые файлы, примененные при отладке программы.
В том числе и скачанные из разных источников.
Основной файл – Чтение_процедур_файла_и_создание_ кнопок_макросов.. При запуске должно высветиться меню запуска в надстройках. Макрос же старта программы по созданию кнопок Begin.
К сведению. Если в обрабатываемых файлах имена по-русски, то тогда пробелы в имени недопустимы. Опция .OnAction не будет работать.
И в заключение по программе. После обработки и создания меню в обрабатываемом файле на лист с Меню выводится информация по кнопкам и текст комментариев. Обработанный файл можно сразу просмотреть, если применить отмену в конце. Ссылка на папку на яндекс-диске.