Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Игра рыбалка представляет собой полноценный симулятор рыбалки и дает возможность порыбачить в реально существующих местах из жизни и поймать рыбу, которая там обитает.

Рыбный дождь

Спорт, Симуляторы, Рыбалка

Играть

Топ прошлой недели

  • Oskanov Oskanov 8 постов
  • alekseyJHL alekseyJHL 6 постов
  • XpyMy XpyMy 1 пост
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

Vba

С этим тегом используют

Microsoft Excel Excel Макрос Программирование Помощь Microsoft Word Без рейтинга Все
164 поста сначала свежее
14
maxtc
maxtc
3 года назад
MS, Libreoffice & Google docs

Проблемы в работе макроса сделанного записью⁠⁠

Проблемы в работе макроса сделанного записью Microsoft Excel, Vba

Друзья, помогите разобраться что делаю не так. Есть таблица выгруженная из САПа. С ней надо произвести некоторые манипуляции. На первом этапе надо привести числа к нормальному виду.



Вот так они выглядят выгруженные.

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


Вот его текст


Sub Макрос5()


Columns("F:F").Select

Application.CutCopyMode = False

Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

End Sub


И вот что получается



Пробовал перед заменой принудительно привести к текстовому формату, все равно не выходит.

Проблемы в работе макроса сделанного записью Microsoft Excel, Vba
Показать полностью 1
[моё] Microsoft Excel Vba
40
0
AlexFly2019
4 года назад

Автоматическое переключение вкладок в зависимом файле Excel⁠⁠

Друзья, вопрос такой:

Есть некая таблица, которая заполняется в течение дня. А есть файл, который заполняется автоматически на основе исходной таблицы. И там и там есть много вкладок. Можно ли сделать так, чтобы при переключении вкладки в исходной таблице переключалась вкладка и в файле с зависимой таблице?

Спасибо

[моё] Microsoft Excel Vba Программирование Текст
7
75
excelpro
excelpro
4 года назад
MS, Libreoffice & Google docs

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

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

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


ПРОШЛЫЙ УРОК


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

01:41 - Kак вернуться к Excel

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

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

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

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

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

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

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

Телеграм канал, для новичков! - https://t.me/joinchat/og7xI9fRFqNmZWZi

Показать полностью
Microsoft Excel Таблица Vba Видео
1
21
K0T0FEICH
K0T0FEICH
4 года назад
MS, Libreoffice & Google docs

Нужна помощь в написании VBA⁠⁠

Не обессудьте. Я в Exel не силен.

При попытке написания макроса в VBA формула "Если" или "iif" ведет себя немного неясно.

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

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

Раньше никогда проблем не было с формулами в самом екселе, но с макросами еще мало знаком. Формула приведена пониже:

Нужна помощь в написании VBA Microsoft Excel, Помощь, Vba

"

Sub Копирование()

Range("I5").Select

Selection.Copy

Formula = IIf("B3" < "0", Range("B3").Select, IIf("C3" < "0", Range("C3").Select, IIf("D3" < "0", Range("D3").Select, "0")))

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=False

End Sub

"

Нужна помощь в написании VBA Microsoft Excel, Помощь, Vba
Показать полностью 1
[моё] Microsoft Excel Помощь Vba
10
14
Fantazerishka
4 года назад
MS, Libreoffice & Google docs

Excel. Как в vba работать с unicod символами⁠⁠

Добрый день. Подскажите пожалуйста. Пытаюсь себе файл excel сделать в котором буду вести свои расходы, копирую выписку из банка, и она в виде: −5 000,00 KZT (5 000,00 KZT), хочу сделать проверку левого символа через что-то вроде Range.Left (то что нагуглил), и если это тире, то уже после этого убирать тире и лишние символы, чтобы потом можно было использовать как число.
Подскажите пожалуйста я смогу совершить проверку самого левого символа с помощью Range.Left?
И как вводить символы юникода которые автоматом становятся "?" в компиляторе.

Не нашел как поставить без рейтинга, поэтому комментарий для минусов внутри

Microsoft Excel Vba Вопрос Без рейтинга Текст Unicode
6
113
0617
0617
4 года назад
MS, Libreoffice & Google docs

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

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

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

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

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

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

К сожалению, нет универсального способа узнать эти идентификаторы - каждый производитель использует свой набор идентификаторов, который также может различаться от модели к модели. С другой стороны,  всё нужное легко гуглятся, ибо используется в шаблонах для 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, но он уже почти сдох, так что не жалко.

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

On Error Resume Next
Set o = CreateObject("OlePrn.OleSNMP")
o.Open IPaddress, "public", 2, 1000
Name = o.get(".1.3.6.1.2.1.25.3.2.1.3.1")
TotalPrintCounter = o.get(".1.3.6.1.4.1.1347.43.10.1.1.12.1.1")
TotalScanCounter = o.get(".1.3.6.1.4.1.1347.46.10.1.1.5.3")
o.Close
On Error GoTo 0

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

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

Да, почему на картинках идентификаторы начинаются с iso, а команды в коде - с ".1". Просто смиритесь. Или прочитайте описание стандарта.

UPD:

Обновлённая ссылка на файл
https://disk.yandex.ru/i/GhlgPxLfdhePBw

Показать полностью 6
[моё] Microsoft Excel Vba Длиннопост
33
1794
0617
0617
4 года назад
MS, Libreoffice & Google docs

Пингуем из Excel⁠⁠

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

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

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

Пингуем из Excel Microsoft Excel, Vba

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

Пингуем из Excel Microsoft Excel, Vba

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

Function Ping(IP)

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

End Function


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

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

Пингуем из Excel Microsoft Excel, Vba

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

Пингуем из Excel Microsoft Excel, Vba
Показать полностью 2
[моё] Microsoft Excel Vba
119
59
0617
0617
4 года назад
MS, Libreoffice & Google docs

Excel VBA: как выбрать подходящее место для кода⁠⁠

В Excel VBA cуществует пять мест для кода:
- модуль;

- модуль листа;

- модуль книги;

- модуль формы;

- модуль класса.

Excel VBA: как выбрать подходящее место для кода Microsoft Excel, Vba, Для начинающих, Длиннопост

Модули формы и класса довольно специфичны, и если вы до них дошли, то этот пост точно не для вас: вы и так всё знаете.

У остальных модулей - своё назначение, так куда же положить код? Как выбрать подходящее место? На определённом этапе всё станет очевидно, но что делать с самым первым макросом?

Ответ 1: модули листа и книги должны содержать только код, который обрабатывает события листа и книги соответственно (но это же наш первый макрос, какие ещё события?); получается, что единственным местом остаётся модуль.

Ответ 2: если не знаете, куда поместить код, используйте модуль; кстати, записанные макросы попадают именно в модули.

Ответ 3: почти всегда можно использовать любое место, но нужно знать кое-какие особенности, т.к. в зависимости от места расположения один и тот же код может дать разные результаты или  привести к ошибке. Связано это с объектной моделью, которая определяет, с какими данными работает код в тот или иной момент времени.

Объект верхнего уровня - Application (собственно приложение Excel). В большинстве случаев его можно не указывать.

Следующий уровень - объект Workbook (книга). Все объекты этого уровня входят в коллекцию Workbooks и на каждый из них можно сослаться
Application.Workbooks("Книга1")
Workbooks("Книга1").

Далее - объект Worksheet (лист). Все объекты этого уровня входят в коллекции Worksheets и на каждый из них можно сослаться разными способами:

Application.Workbooks("Книга1").Worksheets("Лист1")
Workbooks("Книга1").Worksheets("Лист1")
Worksheets("Лист1")
Кроме того, все объекты Worksheet входят в коллекцию Sheets, т.е. можно обращаться к ним:

Application.Workbooks("Книга1").Sheets("Лист1")
Workbooks("Книга1").Sheets("Лист1")
Sheets("Лист1")
Далее остаётся только получить конкретную ячейку на листе в книге. Для получения ячейки используется свойство Cells объекта Worksheet. Для упрощения (очень-очень сильного упрощения) можно считать ячейку концом цепочки:

Application.Workbooks("Книга1").Sheets("Лист1").Cells(1, 1)
Workbooks("Книга1").Sheets("Лист1").Cells(1, 1)
Sheets("Лист1").Cells(1, 1)
Cells(1, 1)

Остаётся упомянуть ещё несколько крайне важных вещей:

Application.ActiveWorkbook или ActiveWorkbook возвращает активную книгу

Application.ActiveSheet или ActiveSheet возвращает активный лист

Application.ThisWorkbook или ThisWorkbook возвращает книгу, в которой расположен код

ThisWorkSheet - ошибка, нет такого слова!

И вот теперь можно, наконец, сказать главное: всегда, в каждой строчке кода, в любой момент времени нужно точно знать цепочку Workbook > Worksheet, потому что почти во всех случаях, если эта цепочка не указана явно, подразумевается активный лист и активная книга. Т.е. если код, расположенный в любом месте в "Книга1", выполняется при активной "Книга2", то он будет работать с данными и изменять содержимое активного листа книги "Книга2".

Исключение: если код расположен в модуле листа, то он всегда работает с этим листом.  Т.е всегда подразумевается ThisWorkSheet (которого не существует - и теперь понятно почему: он может существовать только в модуле листа, а там он подразумевается по умолчанию). Разумеется, это не мешает использовать явное указание на другой лист или книгу.

Например, код

Cells(1, 1)

расположенный в модуле листа, всегда будет работать с этим листом. Этот же код, расположенный в модуле или модуле книги, будет работать с активным листом активной книги.

Код

Workbooks("Книга1").Sheets("Лист1").Cells(1, 1)

всегда будет работать одинаково.

Таким образом:

- если вы совершенно точно собираетесь работать только с одним листом, то можно поместить код в модуль листа, это визуально упростит код;

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


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

Существуют разные способы упростить код и избежать ошибок.

1. Если вы уверены, что работа с активным листом активной книги - всё, что вам нужно, то цепочку Workbook > Worksheet в большинстве случаев можно опустить.

2. Оператор With:

With Workbooks("Книга1").Sheets("Лист1")
.Cells(1, 1) = 1
End With
эквивалентен

Workbooks("Книга1").Sheets("Лист1").Cells(1, 1)
Excel VBA: как выбрать подходящее место для кода Microsoft Excel, Vba, Для начинающих, Длиннопост

Т.е. все свойства и методы внутри этого оператора, которые начинаются с ".", относятся к указанному объекту, а без точки - к активному листу активной книги

3. Переменные типа объект (и помните: любой код в VBA должен начинаться с Option Exlicit - два этих слова уберегут вас от миллионов ошибок)

Excel VBA: как выбрать подходящее место для кода Microsoft Excel, Vba, Для начинающих, Длиннопост

4. Можно просто сделать нужный лист активным (лично я не люблю этот метод, но почему бы и нет)

Excel VBA: как выбрать подходящее место для кода Microsoft Excel, Vba, Для начинающих, Длиннопост

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

Показать полностью 3
[моё] Microsoft Excel Vba Для начинающих Длиннопост
16
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии