1795

Пингуем из Excel

Excel - это не только ВПР и дашборды, но и забавно, а иногда - бессмысленно и беспощадно.

На Youtube есть канал, где его автор творит в екселе всякие админские непотребства. Сейчас он дошёл до отправки в телеграм сообщений о результатах мониторинга.  Я иногда подбираю у него идеи, однако сильно чешусь в неприличных местах, когда вижу его код.

Увага: просмотр канала опасен для неокрепшей психики юных админов.

После просмотра видео, где он пингует список хостов, я подумал: а какого чёрта! И переписал это на свой лад.

Основная нагрузка - функция Ping

Function Ping(IP)

Ping = CreateObject("Wscript.Shell").Run("ping -n 1 -w 1000 " & IP, 0, True) = 0

End Function


Запускает внешний процесс, в котором выполняет собственно ping до нужного хоста.

В оригинале было так:

Весь остальной код - рюшечки вокруг этой функции: обход списка заданное количество раз, раскрашивание ячеек, ожидание паузы и проч.
Файл доступен по ссылке https://disk.yandex.ru/d/cA1XcK44Dx4uwQ

MS, Libreoffice & Google docs

783 поста15K подписчиков

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

1. Не нарушать правила Пикабу

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

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

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

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


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

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

Вы смотрите срез комментариев. Показать все
2
Автор поста оценил этот комментарий
А подскажите пожалуйста, с чего начать изучение vba? Есть какие-нибудь годные гайды?
раскрыть ветку (31)
4
Автор поста оценил этот комментарий

С появления интересной задачи, которую хочется решить во что бы то ни стало. Изучать просто так, на всякий случай, бессмысленно - VBA, с одной стороны, достаточно простой сам по себе язык, с другой - вся его суть - в применении к объектам данных в конкретной задаче. А этих объектов тьма-тьмущая.

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

В ситуации когда прям вообще тупик и не знаешь что делать, вижу два пути: записать макрос для всех своих действий на листе и разобрать как оно работает, заугуглить "excel vba как ...." - и изучать полученные результаты. Спустя некоторое время придёт понимание как оно работает, а всё остальное - опыт и наработка типовых приёмов.

раскрыть ветку (27)
1
Автор поста оценил этот комментарий

Задача заполнение договора по таблице в эксель. Штатными средствами ворда сделал это, но нужно немного больше функций, вроде замены уважаемый на уважаемая и автоматическое добавление новых строк в ворде и их заполнение. Ну то есть чтобы по ключу "компания" он заполнял таблицу работников, добавляя нужные строки по необходимости. Готовых бесплатных решений не нашел, хотя может быть плохо искал :)

Сложная это задача для того, кто последний раз кодил лет 7 назад, да и то в паскале?) Задачу не надо прям обязательно решить, поэтому особо не парюсь и хотел бы просто найти какой-то годный "базовый" самоучитель, чтобы просто понять, стоит ли вообще лезть сюда или нет :)


Но в любом случае, спасибо за ответ.

раскрыть ветку (26)
2
Автор поста оценил этот комментарий

В зависимости от объёма данных я бы рассмотрел вариант печати со слиянием:
в Word готовите шаблон с полями слияния, в Excel - чистые данные. Потом всё это сливается в Ворде  при помощи мастера слияния. Никакого кодинга не нужно.

раскрыть ветку (17)
0
Автор поста оценил этот комментарий

Да, я так и сделал. Но функций мастера слияния не совсем хватает.

раскрыть ветку (16)
0
Автор поста оценил этот комментарий

А чего именно не хватает? Надо подумать как это исправить.

раскрыть ветку (15)
1
Автор поста оценил этот комментарий

Ну часть проблем я описал в комменте выше. Типа нельзя сразу несколько строк из таблицы "вставить" в один документ (кроме копипаста), заменить склонение слов, взависимости от пола к примеру, взависимости от значений поля поменять структуры предложения, выделить инициалы и т. п. Часть проблем, конечно, можно решить через эксель, но это лишнее данные, с макросами я так понимаю можно сделать это куда проще и эффективнее, да и удобнее для юзера.

Но проблема у меня в том, что я вообще не понимаю как взаимодействать с "элементами" приложений/документов. Вот я и ищу (хотя и не особо рьяно) какой-нибудь хороший базовый гайд по основам VBA, чтобы просто в целом понять, стоит ли мне лезть в эти дебри :)


Для вас я думаю задача которая передо мной максимум на час, так что забейте)

раскрыть ветку (14)
1
Автор поста оценил этот комментарий

1.Несколько строк - если имеется в виду, что в исходном списке каждая запись состоит из нескольких строк с одинаковым набором полей, то можно использовать поле слияния NEXT. На мой взгляд, это неправильно и противоречит идее - но технически это возможно.
2. Склонение слов - автоматически никак, в екселе должен быть столбец "Пол", и тогда его можно использовать поле слияния IF. Или отдельное поле для окончания (ый/ая/ые/ое) и тогда в ворде пишем "Уважаем" и вставляем поле.

3. Структуры - навскидку не скажу, никогда не сталкивался. Вероятно можно также при помощи IF.

4. Инициалы - насколько я понимаю, нужно первую букву слова делать отличной от остальных. В голову ничего не приходит.

Как взаимодействовать с элементами - включаешь запись макроса, делаешь в программе элементарное действие, останавливаешь запись и смотришь на записанный макрос.
Если есть возможность установить старый Офис 2003, то это было бы полезно для изучения: это последняя версия со встроенной справкой которая очень быстро работает. Начиная с 2007 и дальше - справка только онлайн, к тому же с автоматическим переводом. А в смысле VBA ничего не изменилось.

Иллюстрация к комментарию
раскрыть ветку (13)
1
Автор поста оценил этот комментарий

1. Может я неправильно понял работу NEXT, но у меня не получилось сделать как мне нужно. На примере поясню. У меня есть Вася из компании "А", Петя из компании "А" и Юра из компании "Б". И мне в ворде нужно заполнить таблицу с контактами всех людей из компании А и при необходимости добавить новые строки, если их нет.

2. Мне почему-то кажется, что в VBA это можно сделать автоматически с помощью списка мужских/женских имен. Без создания лишних слобцов типа пола и окончания.

3. У меня не получилось.

4. Это делается с помощью экселевский функций по работе со строкой (типа ПОИСК, ПСТР, ЛЕВСИМВ). Уверен, что в VBA аналогичные функции есть, но в VBA их не нужно делать для каждой записи, забивая таблицу, а только по необходимости.


Про запись макросов крутяк, не знал что такое есть :) Спасибо.

раскрыть ветку (12)
1
Автор поста оценил этот комментарий

Ах и да, макросы можно записывать таким образом в разных приложениях? Ну типа одновременно и в ворде, и в экселе? Или запись только в одном будет работать?

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

Word и Excel работают со своей независимой копией VBA. Записывать макросы можно одновременно, в каждую копию VBA будут попадать только свои данные. Т.е. в Ворде мы не увидим действий екселя и наоборот. В этом есть логика: слишком разная объектная структура у программ.

раскрыть ветку (1)
0
DELETED
Автор поста оценил этот комментарий
Я вот нихрена не понял, но восхищен вашим диалогом!
1
Автор поста оценил этот комментарий

Кстати, раз вы занимаетесь сливанием документов. У меня на днях была проблемка. При сливании документа из Экселя в Ворд все даты конвертились в американский формат, то есть 1 марта 2021 отображалось как 3/1. В Экселе формат нормальный, в Ворде не разобрался как настроить. Пробовал на разных компах, с разными Офисами - один результат. Не сталкивались, случайно?
PS. Проблему решил костылями - скопировал все даты в текстовый файл, затем вставил их в столбец с форматом "Текст". Но на будущее хотелось бы нормальное решение.
@0617, может вы знаете?

раскрыть ветку (7)
1
Автор поста оценил этот комментарий

Цирк при слиянии может быть не только с датами, но с рублями - 12,34 может превратиться в 12,340000000000000001. К счастью, с этим легко справиться:

Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (6)
1
Автор поста оценил этот комментарий

Типа такого?

https://youtu.be/y0eJC3-9KsA

раскрыть ветку (5)
0
Автор поста оценил этот комментарий

Да, похоже. Только это не гайд, а демонстрация. Хотя в комментах есть ссылка на гайд по VBA, жаль правда в видеоформате, но все равно спасибо)

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

Забавно. А вы гуглить пробовали? в сети навалом руководств по ВБА.
по гуглите "ВБА для чайников", "ВБА самоучитель"

https://firststeps.ru/vba/excel/vbaexcel1.html
http://www.askit.ru/custom/vba_office/vba_office_plan.htm

раскрыть ветку (3)
0
Автор поста оценил этот комментарий
В том то и дело, что их как навалом :) и понять какое из них годное я не смогу. Вот и попробовал спросить у тех кто шарит и может быть знать такую инфу
раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Тут нужно разделить на две части:

1. возможности и конструкции самого языка ВБА

2. Объектная модель приложения которым хотите управлять.


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

Объектную модель приложения - это непосредственно на какие объекты подразделяется приложение, какие методы (действия) и свойства эти объекты имеют. Все объекты заучивать не нужно (да и не возможно), в случае необходимости работы с каким либо объектом нужно идти смотреть справку (references guide) по этому объекту (на пример вот справка по объекту range(диапазон) в екселе: https://docs.microsoft.com/ru-ru/office/vba/api/excel.range(... )


Тогда точно Вам нужна эта ссылка: http://www.askit.ru/custom/vba_office/vba_office_plan.htm

или книга ВБА для чайников - очень хорошая, сам читал)
еще вот эта хорошая "EXCEL. ТРЮКИ И ЭФФЕКТЫ" Алексей Гладкий, Александр Чиртик

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Спасибо)
0
Автор поста оценил этот комментарий

А по шаблонам *.dot не получится такое? Просто как-то пришлось делать документацию на десятки регионов - сделали один шаблон, а в него уже подставляли данные по каждому региону.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Я примерно так и сделал, только шаблон у меня в docx. Но не все необходимые функции смог реализовать штатными средствами ворд.

3
DELETED
Вата горит
Автор поста оценил этот комментарий
Комментарий удален. Причина: Систематические нарушения правил ресурса
раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Ну мне кажется для моей задачи нужны именно скрипты, причем довольно простые. С функционалом ворда/экселя решение получилось неполноценным.

Но спасибо за совет, попробую еще потыкаться в офисный пакет, а не в VBA)

1
Автор поста оценил этот комментарий

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

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества