VBA Excel — массовая неопасная замена

Решил поделиться ещё одним полезным отрывком кода. Была задачка массовой подмены в документе одних значений на остальные, при всем этом они могли пересекаться (поменялась нумерация) и рядовая поочередная замена приводила к хаосу. В итоге вышла вот таковая процедурка для подмены в 2 прохода.

Пример использования: на вкладке ReplaceRules есть таблица подмены

Для подмены в выделенном фрагменте используем последующий макрос, привязанный на жаркую клавишу.

Найдены вероятные дубликаты

MS, Libreoffice & Гугл docs

451 пост 12.5K подписчиков

Правила общества

2. Публиковать посты надлежащие теме общества

3. Проявлять почтение к юзерам

4. Не допускается публикация постов с вопросцами, ответы на которые просто отыскать при помощи хоть какого поискового веб-сайта.

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

Принципиально — общество призвано посодействовать, а не постебаться над постами создателей! Помните, не все владеют 100 процентными познаниями и способностями работы с Office. Хотя вы и сможете написать, что вы знали о описываемом приёме ранее, пост неинтересный и т.п. и т.д., просьба воздержаться от схожих объяснений, заместо этого предложите метод лучше, или дополните его собственной полезной информацией и для вас будут признательны юзеры.

Утверждения вроде «пост — отстой», это оскорбление создателя и будет наказываться баном.

Склоняю голову, перед людьми, ебущимися с многомилионными базами на экселе и пишущими в нём код на вба.

Иллюстрация к комментарию

Алярма! На pastebin верный вариант, в посте необходимо удалить строчки

пока вел войну с шифровкой экселя — проглядел

@moderator, можно как-то поправить? Отредактировать не могу.

2 штуки удалил. Сейчас правильно?

Да, спасибо огромное.

Интересно почитать:  Библиотеки для работы с excel с

Может я что не понимаю, но почему 150 без звёздочки?

А почему она обязана была быть со звёздочкой?

Поэтому что без звёздочки какая же это 150?

Значения пересекаются либо тут иной принцип?

В том и фокус, что значения могут пересекаться, для этого 2 прохода: 1-ый меняет на промежуточное значение !SafeReplace1!, !SafeReplace2! и т.д. А 2-ой проход уже меняет !SafeReplace1! на значение первой строчки и дальше в том же духе.

А звёздочка здесь совсем ни при чём, я не помню, для что она была в обозначении сигнала (может уточнить, может сноска).

Макросы. Изучаем редактор VBE. Академия Excel

Давайте разбираться где происходит написание макросов? В Excel существует интегрированный редактор Visual Basic Editor (VBE), в каком фактически и происходит создание макросов с нуля, редактирование имеющийся, удаление ненадобных.

Посмотрев урок, Вы научитесь настраивать редактор под себя, познакомитесь с новеньким понятием Модуль (узнаете главные операции с ними).

01:05Как попасть в редактор VBE

01:41Kак возвратиться к Excel

02:32Настройка наружного вида редактора

04:24Перемещение окон редактора

06:20Окно проекта. Знакомство с модулями.

07:26Создание модулей

08:04Удаление модулей

09:28Переименование модуля

11:27Форматирование кода макроса

Счётчик распечатанных страничек сетевого принтера — SNMP в Excel

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

Опосля того, как я немношк попинговал, пора применить те выработки в какой-либо практической задачке — пинг ради пинга смотрится мало глупо.

Мысль, как и в прошедший раз, украдена на том же Youtube-канале у говорящего бота. Правда, мне не любопытно состояние портов маршрутизатора — это не моя неувязка. А вот выяснить сколько отпечатали-отсканировали мои принтеры-сканеры, будет очень полезно. Тем наиболее, что для этого не надо никуда ходить и даже не надо ставить и учить забикс. Всего-то пятнадцать минут от идеи до реализации в Excel. Уверен, вы справитесь резвее.

Интересно почитать:  Как в excel сделать сводную таблицу из нескольких файлов

Для начала, что такое SNMP: фактически хоть какое устройство, имеющее сетевой интерфейс, умеет в этот протокол, который дозволяет удалённой стороне получить набор метрик работы этого устройства и управлять им. В этом случае из всех тыщ характеристик меня интересует счётчик распечатанных и отсканированных страничек.

Если в 2-ух словах: отправляем принтеру команду с определённым идентификатором, получаем ответ.

К огорчению, нет всепригодного метода выяснить эти идентификаторы — любой производитель употребляет собственный набор идентификаторов, который также может различаться от модели к модели. С иной стороны, всё необходимое просто гуглятся, ибо употребляется в шаблонах для Zabbix. Далее остаётся поглядеть xml-файл и отыскать в нём подходящую строчку. Иной вариант — прочесть ВСЕ ответы устройства на ВСЕ запросы и отыскать нужные значения. К счастью, программ для этого полным-полно, а разобраться в потоках цифр не весьма трудно. К примеру SnmpB.

Счётчик распечатанных страниц сетевого принтера - SNMP в Excel Microsoft Excel, Vba, Длиннопост

Указываем IP-адрес принтера, SNMPv2 (в хоть какой непонятной ситуации выбирай SNMPv2) и запускаем сканирование — правой клавишей Walk.

Счётчик распечатанных страниц сетевого принтера - SNMP в Excel Microsoft Excel, Vba, Длиннопост

На получение результата может уйти пару минут.

Счётчик распечатанных страниц сетевого принтера - SNMP в Excel Microsoft Excel, Vba, Длиннопост

Дальше остаётся скопировать итог в блокнот (как досадно бы это не звучало, поиск в SnmpB не работает) и отыскать текстовое значение счётчика, которое необходимо за ранее подсмотреть или через веб-интерфейс принтера, или ещё как.

Счётчик распечатанных страниц сетевого принтера - SNMP в Excel Microsoft Excel, Vba, Длиннопост

Описанный чуть повыше вариант — отыскать шаблон для забикса и поглядеть что у него снутри.

Счётчик распечатанных страниц сетевого принтера - SNMP в Excel Microsoft Excel, Vba, Длиннопост

Для всех принтеров и МФУ (все — Kyocera), до которых я сумел достать, счётчик распечатанных страничек отдаётся по команде «.1.3.6.1.4.1.1347.43.10.1.1.12.1.1», а отсканированных — «.1.3.6.1.4.1.1347.46.10.1.1.5.3». Домашний Ricoh отдаёт счётчик по команде «.1.3.6.1.4.1.367.3.2.1.2.19.1.0». Единственный доступный HP LaserJet 2015 совершенно никак не реагирует на SNMP, но он уже практически сдох, так что не жаль.

Интересно почитать:  Как в excel вставить новый лист

Далее скучновато: берём VBA, пишем

Всё, остаётся обернуть эти строчки в цикл по списку принтеров, и ликовать тому, что одна постоянная задачка стала решаться мало проще. Файл лежит на Yandex.Диске, правда, быстрее всего, он будет бесполезен — навряд ли у кого-то есть полсотни киосер.

Счётчик распечатанных страниц сетевого принтера - SNMP в Excel Microsoft Excel, Vba, Длиннопост

Да, почему на картинах идентификаторы начинаются с iso, а команды в коде — с «.1». Просто смиритесь. Либо прочитайте описание эталона.

Ссылка на основную публикацию
Adblock
detector