Макросы Excel или постер на прокачку.

OTEC_SERGIUS

Client
Регистрация
04.10.2014
Сообщения
387
Реакции
69
Баллы
28
Доброго времени суток.
=
Эта статья посвещена теме "как с минимальными усилиями забить данные для постинга объявлений в файл Excel, для последущего использования их в пользовательском шаблоне ZennoPoster5 ".
=
Наверное не многие заметили, что в ZennoPoster 5 - Билд 5.5.0.0 появились поддержка *.xlsm формата таблиц.
Что же такое *.xlsm и чем отличается от старого доброго *.xlsx?
=
Расширение XLSM – это лист экселя с поддержкой макросов, написанных на языке Visual Basic для приложений (VBA), сохраняется в новом формате Open XML, который появился в Microsoft Office 2007. XLSM файлы очень похожи на XLSX файлы, но включена поддержка макросов. Они могут быть открыты с помощью Excel 2007 или выше, или в предыдущих версиях Excel, если установлен Пакет обеспечения совместимости Microsoft Office для форматов файлов Word, Excel и PowerPoint. По соображениям безопасности, Excel не позволяет открывать макросы по умолчанию.
Примечание: Microsoft Excel не будет выполнять макросы в файлах XLSX, даже если они содержат код макроса. Из-за безопасности файлы с макросом должны быть сохранены в файле с расширением XLSM.
=
Итак, с помощью Visual Basic for Applications(VBA) создадим интуитивно понятный даже для ребёнка интерфейс забивки объявлений.
=
Начнём мы с настройки Excel.(Хоть 2007 версия отлично работает с макросами, я всё же рекомендую работать на 2010). По умолчанию в Excel макросы отключены(из соображений безопасности). Но настоящие пираты красного моря не боятся xD. Врубаем.
=
Шаг1.
9fli5bq.png

=
Шаг2.
fs9NJxg.png

=
Шаг3.
9UzMczS.png

=

Всё. Инструмент готов. Чтобы начать заниматься программаторством надо открыть код листа.
9z2jXwx.png

=========================================

Давайте посмотрим в каких типичных ситуациях нам может пригодиться стандартный функционал Excel и макросы VBA:
=
Пример1.(Создание выпадающих списков городов и метро/районов)
=
Тут я показываю как создавать выпадающие списки:
Тут как вставлять их в любую ячейку:
=
А теперь применим маленький VBA код который не даст пользователю свалять дурака и случайно заполнить метро/район в городе в котором отсутствует метро/район.
Код:
Развернуть Свернуть Копировать
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("A2:A1000")) Is Nothing Then
        If Target = "Саратов" Then
            Target.Offset(0, 1).Activate
            Else
             Target.Offset(0, 1) = ""
        End If
    End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("B2:B1000")) Is Nothing Then
        Application.EnableEvents = False
        If Target.Offset(0, -1) <> "Саратов" Then Target.Offset(0, -1).Activate
    End If
    Application.EnableEvents = True
End Sub
Тут как это должно работать:
=
Пример2.(Автоматизируем вставку пути к фото)
=
Стандартная ситуация. В ячейку надо вставить имя папки или всю директорию по которой лежат наши фотки. Кто часто работает с Excel поймёт как может напрягать сворачивание программы, поиск директории с фото, копирование, вставка имени директории в нужную ячейку.
Упростим это. Накидаем код который по событию(дабл клик по любой ячейке в нужном нам столбце), вызывает окно проводника и вставляет имя выбранной папки с фото.
Код:
Развернуть Свернуть Копировать
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Arr
On Error GoTo 0
    If Intersect(Target, Columns("A:A")) Is Nothing Or Target.Cells.Count > 1 Then Exit Sub
    With Application.FileDialog(msoFileDialogFolderPicker)
         .AllowMultiSelect = False
         .Show
        If .SelectedItems.Count <> 1 Then Exit Sub
        Arr = Split(.SelectedItems(1), "\")
        Target = Arr(UBound(Arr))
    End With
    Cancel = True
End Sub
=
Тут как это должно работать:
=
Фух!!! Сегодня мы уже достаточно попрактиковались в программаторстве на VBA, и даже проголодались. Пора переходить к десерту!:by:
=
Пример3.(Шаблон нашпигованный сладкими макросами под соусом Avito-Недвижимость)
=
Этот шаблон я делал лично для себя. Он не претендует на серьёзное использование в сфере постинга объявлений, но я надеюсь кому нибудь на форуме он может оказаться весьма полезным.
Переделать его под другую категорию или под использование на другом сайте не составит большого труда.
=
Принцип работы шаблона:
На листе1 данные которые мы будем заполнять для постинга объявлений.
На листе2 схема категорий(Её под свои нужды можно редактировать)
На листе3 хранятся все выпадающие списки(Их тоже можно редактировать)
=
Какие макросы присутствуют в шаблоне:
-Макрос на проверку Город район/метро.
-Макрос на загрузку фото.
-Макрос на выбор подкатегории недвижимости-авито.
-Макрос на подсветку зелёным/красным что надо/ненадо заполнять.
-Макрос на выделение пунктиром строки
-Макрос на умную шапку(При щелчке по строкам разных категорий будет меняться шапка)
-Макрос на сортировку(При дабл клике на ячейке шапки сортирует от A-Z и в обратном порядке значения всей строки, по заданному столбцу.)
=
Видео работы шаблона:
=
Конец:bt:
Не стесняемся с идеями, что можно еще добавить в шаблон, буду рад послушать.
Всем спасибо за просмотр и удачи в новом году, голосуйте за прокачанный постер!!!)
 
Номер конкурса статей
  1. Второй конкурс статей
Тема статьи
  1. Другое

Вложения

вызывает окно проводника и вставляет имя выбранной папки с фото.

Добрый день!

Вопрос а как сделать чтоб полный путь отображался в ячейке?
 
Я еще в январе-феврале переосмыслил програмку, и переписал её заново.
Теперь там не в ячейках все заполняешь, а выплывает удобная форма и через форму идет заполнение объявления. Это сделало в разы удобнее пользоваться экселем.
Может быть выложу на осенний конкурс статей. (на весенний я уже не успел)
 
  • Спасибо
Реакции: AlisaZ

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)