воскресенье, 22 апреля 2018 г.

Сила и красота VBA

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

Что ж, путь этот труден, сложен и достоин только уважения!
Но неужели этот путь закрыт для обычного смертного?
Как ему, простому человеку - бухгалтеру, художнику, дизайнеру или даже аналитику - увидеть на своем компьютере вожделенные окошки? Как ему трепетной рукой поправить ошибки в любовно написанной программулечке? Как ему прикоснуться к этому сияющему и загадочному миру IT? Неужели нет короткой тропинки, ведущей к желаемому результату??? Есть такая тропинка, отвечу я! И пошлю вас на три буквы!!! И буквы эти - VBA!!!

Краткое вступление
VBA - Visual Basic for Application - это поистине революционное изобретение от компании Microsoft. Любой пользователь пакета Microsoft Office одним быстрым движением руки может открыть встроенную среду разработки - и начать творить собственную программу. Несмотря на скептическое отношение профессионалов - VBA отличный вариант для случаев, когда необходимо совершить небольшую автоматизацию без привлечения средств массового поражения (компании - разработчика). 

Сегодня мы напишем мааааленькую, но красивую программу, которая демонстрирует базовые возможности VBA. Исходный код программы VBA, которая будет находиться внутри файла Excel, называется макрос.

Окружение
Для решения нашей задачи будем использовать Microsoft Office 2013.

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

Для того, чтобы достичь цели, составим небольшой план:

План
  1. Создать excel-файл, в котором будем писать наше приложение;
  2. Активировать среду разработки Microsoft Visual Basic for Applications;
  3. Нарисовать форму, с которой будет работать пользователь;
  4. Написать логику обработки введенных значений;
  5. Написать код запуска формы при открытии файла MS Excel;
  6. При открытии файла - скрыть окно MS Excel, оставив видимой только форму расчета;
  7. PROFIT!
Таким образом, при достижении последнего пункта мы будем иметь файл, при двойном клике на который будет запускаться форма вычислений. То есть программа будет вести себя как полноценное и вполне самостоятельное приложение. 
Вперед!=)
Создание Excel-файла
Для начала создадим Excel-файл, в котором будем вести разработку. Для того, чтобы в этом файле был разрешен запуск макросов - необходимо, чтобы файл имел расширение .xlsm. Назовем наш файл - Calculator.xlsm.

Активировать среду разработки
Для того, чтобы иметь возможность создавать и изменять макросы в Excel необходимо активировать панель разработчика. Для того, чтобы это сделать, необходимо нажать ФАЙЛ -> Параметры.
В открывшемся окне Параметры Excel выбрать пункт "Настройка ленты" и потом, в разделе "Основные вкладки", поставить галочку "Разработчик" и нажать "OK".

После этого появится вкладка "Разработчик". Чтобы открыть среду разработки - нажимаем на кнопку "Visual Basic". Откроется среда разработки.

Создание формы
Форма в VBA создается до обидного - если сравнивать с "серьезными" языками - просто. Надо просто кликнуть правой кнопкой мышки на проект слева, и выбрать пункт меню Insert -> UserForm.

Откроется дизайнер форм, в котором можно нарисовать элементы управления формой. В панели свойств формы меняем свойство Name на Calculator, а свойство Caption - на "Калькулятор".


Для того, чтобы изменить надписи и имена элементов управления - пользуемся панелью свойств:


Первое текстовое поле я назвал Dollars, нижнее - Rubles.
На этом создание формы завершено))

Пишем код
Теперь оживим нашу форму. Логика вычислений проста: при нажатии на кнопку необходимо взять число из текстового поля Dollars, умножить на курс доллара и полученный результат сохранить в поле Rubles. 
Чтобы написать код обработки нажатия на кнопку - необходимо дважды кликнуть на кнопку. При этом откроется редактор кода с процедурой, которая будет вызываться при нажатии на кнопку:

Сохраним курс доллара в ячейку A1 Excel-файла. Осталось только написать простой код, который будет производить вычисления:

Курс доллара, берем из ячейки A1 первого листа с помощью выражения Лист1.Range("A1").Value.
В файле Excel сохраним в ячейку A1 текущий курс доллара - 30 (ах, мечты-мечты)

Запуск формы
Мы хотим, чтобы форма запускалась при открытии нашего Excel-файла. Сделать это довольно просто. Открываем файл "ЭтаКнига" в структуре проекта

и в открывшемся редакторе кода создаем процедуру, которая при открытии будет отображать нашу форму Calculator:

Теперь можно сохранить все изменения и закрыть файл Excel и среду разработки VBA.

Проверка работы
Теперь, при открытии файла Calculator.xlsm у нас должен открыть Excel-файл с заполненной ячейкой A1 и запуститься форма Калькулятор. При вводе количества долларов и нажатии на кнопку "Вычислить", должно отображаться количество рублей:

Скрываем Excel
Остался последний пункт нашего эпического плана - скрыть Excel-файл. Это достигается одной строчкой кода, добавленной в процедуру открытия Workbook_Open. Теперь при двойном клике на файд Calculator.xlsm будет просто открываться наша форма.

Итог
Итого, мы написали небольшое приложение на VBA с графическим интерфейсом, не пользуясь никакими дополнительными инструментами, кроме непосредственно MS Excel.
VBA обладает громадными возможностями для автоматизации - и если вы непрофессиональный программист и вам нужно быстро решить какую-то задачу под Windows - VBA подойдет идеально.
Excel-файл, лежащий в основе этого приложения можно использовать как мини-базу данных и хранить там все, что нужно для работы.

Конечно, нужно учитывать некоторые нюансы:

  1. Все вышесказанное актуально лишь при работе под Windows и установленном MS Office;
  2. Получившееся приложение предназначено для работы одного пользователя;
  3. В силу простоты языка - нежелательно создавать таким образом сложные и насыщенные логикой приложения - иначе начнете плутать в дебрях кода;
  4. Этот подход предполагает одного разработчика, иначе неудобно сливать изменения от нескольких людей воедино.
Или, если коротко, если вы пользователь Windows и MS Office и хотите что-то сделать для себя - это ваш вариант!
Удачи вам во всех начинаниях и до новых встреч!


P.S.
Если хотите узнать больше узнать о возможностях VBA - вам сюда

Комментариев нет:

Отправить комментарий