Интерес – двигатель прогресса

Автор: | 30.01.2025

Всегда интересно узнать что-то новое, особенно, когда ты что-то уже слышал об этом или знал. Мне часто приходилось использовать понятие, сформулированное ещё, наверное, Пифагором, когда он говорил о том, что он знает, что он ничего не знает. На эту тему можно вспомнить и одного из религиозных деятелей поздних времён Римской империи, когда он о христианской религии говорил, что верит, потому что абсурдно. Незнающему человеку это не понятно.

         Если обозначить знание человеком в виде точки или круга, а незнание всё за границей этого круга, то самый знающий всё человек – это идиот.

Теперь об 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 не будет работать.

И в заключение по программе. После обработки и создания меню в обрабатываемом файле на лист с Меню выводится информация по кнопкам и текст комментариев. Обработанный файл можно сразу просмотреть, если применить отмену в конце. Ссылка на папку на яндекс-диске.