1Irina1985

1Irina1985

пикабушница
excelsspro@gmail.com
поставилa 1 плюс и 31 минус
338 рейтинг 17 подписчиков 127 комментариев 14 постов 1 в горячем
63

Пишем автоматически обновляемую смету в Excel VBA

Задача: сделать смету на ремонтно-строительные работы с автоматическим обновлением цен на материалы

Решение: пишем макрос в Excel

Sub getprice()

Название макроса

Set ws = ThisWorkbook.Worksheets("список")

Присваиваем переменной ws значение листа "список" текущей рабочей книги (текущая - к которой прикреплён модуль VBA)

TotalRow = ws.UsedRange.Rows.Count

Присваиваем переменной TotalRow значение количества использованных строк листа ws

For i = 1 To TotalRow - 1

Начало цикла, начиная с 1 до количества использованных строк - 1 (-1 так как дальше мы адресуем ячейки с переменной i + 1)

TempString = "=VLOOKUP(A" & i + 1 & ",каталог!$H$1:$I$24605,2,0)"

Присваиваем переменной TempString значение формулы ВПР из листа каталог. В макросах используются только английские формулы. В формуле используется переменная, обозначающая номер строки (А1, А2 и т.д.)

ws.Cells(i + 1, 2).Formula = TempString

Заполняем ячейки, начиная с B2 листа ws значением переменной TempString

Next i

Конец цикла

Set IE = CreateObject("InternetExplorer.Application")

Присваиваем переменной IE объект InternetExplorer

For i = 1 To TotalRow - 1

Начало цикла

URL = ws.Cells(i + 1, 2).Value

Присваиваем переменной URL значение ячейки, начиная с ячейки B2 (ВПР ссылки из каталога)

IE.navigate URL

Переходим браузером по URL

Do Until (IE.readyState = 4 And Not IE.Busy)
DoEvents
Loop

Ожидаем загрузку страницы

Set ieDoc = IE.Document

Присваиваем переменной ieDoc значение HTML-кода загруженной страницы

Set detail_elements = IE.Document.getElementsByTagName("span")

Присваиваем массиву detail_elements значение массива всех элементов с тегом "span"

For Each detail_element In detail_elements

Начало цикла

If detail_element.getAttribute("class") = "retailPrice" Then

Проверка условия - равен ли атрибут элемента "class" значению "retailPrice"

ws.Cells(i + 1, 3) = detail_element.innerText

Если условие истинно, записываем внутренний текст элемента в ячейку, начиная с ячейки C2. Этот код считывает цену из интернет-каталога.

End If

Конец условия

Next detail_element

Конец цикла

Next i

Конец цикла

IE.Quit

Закрываем браузер

For i = 1 To TotalRow - 1

Начало цикла

TempString = "=VALUE(C" & i + 1 & ")"

Присваиваем переменной TempString значение формулы ЗНАЧЕН

ws.Cells(i + 1, 4).Formula = TempString

Записываем в ячейки, начиная с D2, формулу из переменной TempString

Next i

Конец цикла

MsgBox "Обновление данных завершено"

Сообщение для удобства

End Sub

Конец макроса

Источник

Показать полностью 1
11

Скачиваем объявления с Avito за 5 минут, не умея программировать

Задача: выгрузить объявления с Avito

Решение:

Устанавливаем бесплатное расширение WebScraper для Chrome (по ссылке)

Переходим в браузере на нужную страницу Avito (для примера, эта страница)

Вызываем контекстное меню правой кнопкой мыши>Просмотреть код

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Кликаем "Web Scraper"

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Create new sitemap>Create Sitemap

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Sitemap Name - называете, как вам хочется

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Start URL: нажимаем "Последняя" в самом низу страницы

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Копируем из адресной строки браузера адрес

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Вставляем адрес в поле "Start URL" в следующем формате:

https://www.avito.ru/telefonica?p=[1-12] (для того, чтобы расширение прошло по всем страницам)

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Кликаем "Create Sitemap"

Кликаем "Add New Selector"

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео
Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Id - пишем любое название для удобства, например, Phone

Type - выбираем "Element"

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Кликаем "Selector">"Select"

Наводим курсор мыши около цены до появления такого прямоугольника и кликаем на него

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Нажимаем клавишу "P" на клавиатуре (английская буква), появляется такой прямоугольник

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Кликаем около цены у объявления ниже, появится второй прямоугольник. Скроллим страницу, убеждаемся, что всё выделилось.

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Кликаем "Done Selecting"

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Отмечаем чекбокс "Multiple", кликаем "Save Selector"

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Кликаем на строчку "phone"

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Кликаем "Add New Selector"

https://avatars.mds.yandex.net/get-zen_doc/2463892/pub_5eb46...

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Кликаем "Select", появится рамочка, в ней наводим курсор около названия телефона, пока не буде так, кликаем. Нажимаем "Done Selecting"

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Кликаем "Save Selector".

Кликаем "Add new selector", аналогично добавляем цену телефона.

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Кликаем "Sitemap %NAME%">"Scrape"

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Ничего не меняем, кликаем "Start Scraping"

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Ждём

Появится такое уведомление

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Импортируем файл в Excel: "Данные">"Из текста">выбираем скачанный CSV>следуем указаниям мастера импорта текстов

формат данных - с разделителями

мои данные содержат заголовки

разделитель - запятая

Скачиваем объявления с Avito за 5 минут, не умея программировать Парсер, Авито, Длиннопост, Видео

Готово!

Источник

Показать полностью 20 1
-1

Как Ростелеком дискриминирует соискателей

Искал вакансии, и наткнулся на вакансию Ростелекома.

Смутила следующая строчка:


Требования:

Образование - МФТИ/ВШЭ/МГУ/МИФИ/МГТУ им. Баумана;

В этот момент сразу ощутил себя вторым сортом, так как, увы, не окончил эти почтенные учебные заведения. Значит, хорошая должность в Ростелекоме мне не светит.

К тому же, налицо явное нарушение ТК РФ Статья 3. Запрещение дискриминации в сфере труда

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

(сохранил ссылку в Web Archive - Интернет всё помнит)

Источник

250

Пишем парсер зарплат headhunter в Excel

Задача: получить зарплаты некой профессии, например, "Программист JavaScript"

Пишем парсер зарплат headhunter в Excel Excel, Макрос, Парсер, Видео, Длиннопост

Решение:

Пишем макрос в Excel

Sub JS_HH()

- начало макроса

Dim URL As String

- объявляем строковую переменную URL

URL = "https://hh.ru/search/vacancy?area=1&area=2019&clusters=true&employment=full&enable_snippets=true&items_on_page=100&no_magic=true&schedule=fullDay&search_field=name&text=Программист JavaScript&only_with_salary=true&from=cluster_compensation&showClusters=true"

- URL с нужным запросом и параметрами


Dim IE As Object
Dim ieDoc As Object

- объявляем объекты IE (браузер) и ieDoc (код страницы)

Set IE = CreateObject("InternetExplorer.Application")

- запускаем InternerExpolorer в фоновом режиме

IE.navigate URL

- переходим в браузере по нужному нам URL

Do Until (IE.readyState = 4 And Not IE.Busy)
DoEvents
Loop

- ожидаем загрузки страницы

Set ieDoc = IE.Document

- присваиваем объекту ieDoc содержание страницы IE

i = 1

- присваиваем счётчику значение 1

Set detail_elements = IE.Document.getElementsByTagName("span")
- получаем массив html-тегов "span"

For Each detail_element In detail_elements

If detail_element.getAttribute("data-qa") = "vacancy-serp__vacancy-compensation" Then

- ищем в массиве элементов "span" теги со значением атрибута "data-qa" = "vacancy-serp__vacancy-compensation"

Пишем парсер зарплат headhunter в Excel Excel, Макрос, Парсер, Видео, Длиннопост
Sheets("JS HH").Cells(i, 1) = detail_element.innerText
- заполняем ячейки на листе JS HH текстовым значением тега "span", подходящего по условию, начиная с ячейки A1
i = i + 1

-прибавляем счётчик

End If

- конец условия

Next detail_element

- конец цикла ForEach

IE.Quit

- закрываем браузер IE

DoEvents

- ожидание выполнения прошлого действия

End Sub

- конец макроса

Готово!

Обрабатываем результаты:

Пишем парсер зарплат headhunter в Excel Excel, Макрос, Парсер, Видео, Длиннопост

использую несколько вложенных ЕСЛИ, ПОИСК, ЗНАЧЕН и ПСТР)

=ЕСЛИ(ЕОШИБКА(ПОИСК("от";'JS HH'!A1));ЕСЛИ(ЕОШИБКА(ПОИСК("-";A1));;ЕСЛИ(ЕОШИБКА(ПОИСК("руб";A1));ЕСЛИ(ЕОШИБКА(ПОИСК("USD";A1));ЗНАЧЕН(ПСТР(A1;1;5))*ЗНАЧЕН(ПСТР('курс доллара'!$A$80;1;2));ЗНАЧЕН(ПСТР(A1;1;5))*ЗНАЧЕН(ПСТР('курс доллара'!$A$77;1;2)));ЕСЛИ(ЕОШИБКА(ЗНАЧЕН(ПСТР(A1;1;7)));ЗНАЧЕН(ПСТР(A1;1;6));ЗНАЧЕН(ПСТР(A1;1;7)))));ЕСЛИ(ЕОШИБКА(ПОИСК("руб";A1));ЕСЛИ(ЕОШИБКА(ПОИСК("USD";A1));ЗНАЧЕН(ПСТР(A1;4;5))*ЗНАЧЕН(ПСТР('курс доллара'!$A$80;1;2));ЗНАЧЕН(ПСТР(A1;4;5))*ЗНАЧЕН(ПСТР('курс доллара'!$A$77;1;2)));ЕСЛИ(ЕОШИБКА(ЗНАЧЕН(ПСТР(A1;4;7)));ЗНАЧЕН(ПСТР(A1;4;6));ЗНАЧЕН(ПСТР(A1;4;7)))))

Источник

Показать полностью 2 1
24

Жителей Подмосковья смутило оповещение из игры Half-Life 2

В городском паблике ВКонтакте "Типичный Долгопрудный" опубликована короткая видеозапись с якобы произошедшим оповещением по громкой связи.

Женский голос зачитал следующее: "Вы обвиняетесь в несоответствии второго уровня и неприятии общественной деятельности первого уровня. Силам Г.О. обвинительный код: Долг, Меч, Выполнять".

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

Источник

2

Ответ на пост «Митинг онлайн» 

Жители Долгопрудного устроили онлайн-митинг

Неравнодушные жители Долгопрудного решили организовать онлайн-флешмоб на карте (такой уже устраивали жители Ростова-на-Дону): у здания администрации каждый желающий оставляет свою метку и высказывает мнение о ситуации.

В настоящий момент в «онлайн-митинге» уже приняли участие 14 человек. Люди задают животрепещущие вопросы: когда они получат социальные выплаты, некоторые жалуются на то, что потеряли работу, а банки не дают отсрочку по кредиту.

https://www.zeemaps.com/map?group=3779245

Ответ на пост «Митинг онлайн» Юмор, Митинг, Самоизоляция, Карантин, Ростов-на-Дону, Яндекс Навигатор, Онлайн-Митинг, Ответ на пост

Источник

-6

Тысячи пользователей московского каршеринга оказались под угрозой

«Дыра» в безопасности позволяет получить несанкционированный доступ к аккаунтам и персональным данным. Пользователи московского каршеринга могут стать жертвами мошенников.


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

«Таким образом можно найти тысячи номеров, и новые появляются каждый день. Чем это чревато? Первое — оператор, фактически, бесплатно дарит свою клиентскую базу, второе — собранные номера телефонов можно использовать как угодно: начиная от сравнительно безобидного спама и заканчивая вещами вроде социальной инженерии: злоумышленник авторизуется при помощи чужого номера телефона, затем звонит жертве, представляясь сотрудником службы безопасности оператора каршеринга, и выманивает у него СМС-код. Всё, теперь ваш аккаунт в распоряжении злоумышленника, и он может бесплатно ездить, а также как угодно нарушать ПДД, договор аренды оператора, и даже устроить ДТП и сбежать — платить за всё будет жертва», — говорит эксперт.


Пресс-служба компании пока не прокомментировала ситуацию.

Источник

-19

Каршеринг головного мозга

Наткнулась в ютубе на творчество очередного  ̶м̶у̶д̶а̶к̶а̶  видеоблогера и каршеровода по совместительству. Видео можно не смотреть, суть в том, что Вася требует ввести повсеместную платную парковку, так как ему, видите ли, некуда парковать каршеринговую повозку.


Я всегда догадывалась, что каршероводы не совсем адекватны, но это полный ппц...

Отличная работа, все прочитано!