Как научится программировать excel. Как написать макрос в Excel на языке программирования VBA


В дополнение к советам, как научиться писать макросы VBA для Excel , расскажу и свою историю - как я учился программированию на VBA.

Началось всё в прошлом веке, в 1993 году, когда я учился в школе. На уроках информатики, у нас в классе, стояли компьютеры-монстры под названием «Корвет» , и мы писали на них простенькие программы на Бейсике. Компьютеры эти отличались от «нормальных» (IBM-совместимых) весьма заметно - у них был монохромный дисплей, напрочь отсутствовал жесткий диск и дисководы для дискет, и единственное, что на нём запускалось (автоматически, после загрузки) - это интерпретатор языка Basic.

Вообще-то, интерес к программированию у меня проявился раньше - в возрасте 9 лет, когда я увидел в журнале «Моделист-конструктор» за 1988 год (который читал регулярно, от корки до корки) какие-то машинные коды для компьютера «Специалист» . Меня тогда очень заинтересовала возможность вбить в компьютер какие-то буквы и цифры, чтобы заставить его делать то, что мне хочется. Увы, финансовое положение моих родителей в те времена оставляло желать лучшего, и о покупке какого-либо подобия компьютера не могло быть и речи. Так что я развлекался тем, что переписывал эти коды из журнала в тетрадку, в надежде, что когда-нибудь у меня появится компьютер, и я смогу им управлять:)

Поскольку в те времена домашний компьютер был роскошью (лишь у некоторых были дома «Спектрумы» , а кому-то повезло обзавестись дорогущим IBM PC 286), осваивал Basic я исключительно в школе, порой задерживаясь после уроков. Школьной программой было предусмотрено всего 2 года обучения предмету «Информатика» (10 и 11 классы), но я с детства интересовался всякой электроникой, поэтому стал посещать занятия с 8 класса, читая там единственную книжку-инструкцию по «Корвету» (вот эта книга , с которой начался мой путь в программирование, она же в ПДФ), и пытаясь составлять простенькие программы. Вскоре преподаватель стала пускать меня за главный компьютер (только на нём была возможность сохранять программы на дискету 5.25" - и то, для этого приходилось немало потрудиться) - и мои программы стали намного сложнее. Однажды даже удалось реализовать игру «Покер» с графическим интерфейсом (получилось около 2000 строк кода) - это при том, что интерпретатор Basic позволял выводить на экран только символы, и графические примитивы.
В итоге, к окончанию школы (1996 год) я умело пользовался циклами, и имел некоторый опыт составления алгоритмов.

Что касается алгоритмов - этот термин до сих пор вызывает у меня аллергию. Во времена учебы в школе, на лекциях по информатике (учился я достаточно неплохо, и нас, победителей всяческих олимпиад, отправляли на дополнительное обучение высшей математике и информатике в очно-заочную школу при УрГУ), нас заставляли писать алгоритмы на каком-то псевдокоде (смеси русского языка с Turbo Pascal). Поскольку в программировании я заметно отставал от сверстников (они учились на IBM-совместимых компьютерах, где был этот самый Паскаль и многое другое, а я, кроме Бейсика, ничего не знал и не видел), было очень сложно освоить синтаксис алгоритмического языка. Кроме того, я не понимал (и сейчас не понимаю), зачем нужно тратить час на составление алгоритма для простейшей программы, если можно просто открыть редактор, и написать несколько строк кода (для меня, нормально знающего английский язык, синтаксис языка BASIC был куда понятнее, чем этот загадочный алгоритмический псевдокод). Про блок-схемы вообще речи не идёт - как вспомню институт, где нас заставляли рисовать блок-схемы (на несколько листов формата A4) для простейших программ из 10 строк, перестаю понимать, как вообще может не пропасть желание изучать программирование после всего этого...

После окончания школы, в институте, я немного изучал Turbo Pascal, на чём моё обучение программированию остановилось на десятилетие (компьютера дома и на работе не было), и я забыл почти всё, что изучал на уроках информатики.
Однако в 2004 году, у меня на работе, начальство наконец-то решило заменить печатную машнку (на которой я уже очень умело колотил по клавишам) на простенький компьютер (это был Pentium-1 с 64 мегабайтами ОЗУ и Windows 98). Учитывая, что Windows я увидел тогда впервые, мне пришлось обучаться работе на компьютере «с нуля».

Освоил компьютер я быстро, т.к. уже на второй день Windows слетела после безуспешной попытки разгона процессора, и мне пришлось в экстренном порядке осваивать переустановку ОС и программ. Человек, помогавший мне в первый день знакомства с компьютером устанавливать операционную систему и основные программы, не имел возможности помогать мне постоянно. Он оставил мне дистрибутивы Windows и Office, пару дисков в разными утилитами, после чего объяснил мне, как вбивать и форматировать текст в Word, как открывать и сохранять файлы через меню программ, и ушел, пожелав мне удачи. Мне ничего не оставалось, как осваивать систему «методом тыка».

Каким счастьем (после печатной машинки) была возможность сохранять и редактировать напечатанные документы... и меня нисколько не смущало, что запуск Word занимал около 20-30 секунд (а CorelDRAW грузился пару минут). Компьютер стал моим главным увлечением - за пару месяцев я освоил основные программы, через полгода вовсю ковырялся в реестре, восстанавливая слетевшую винду (кто помнит Win98 - тот меня поймёт), попутно освоил архитектуру компьютера (постоянно приходилось перетыкать модули памяти, подключать дополнительные жесткие диски, и т.п.)

Работа моя заключалась в подготовке различных документов (актов, приказов и т.п.), и я стал задумываться, как же её упростить (не люблю делать одно и то же изо дня в день). Почти сразу я обратил внимание на пункт «Редактор Visual Basic» в меню Microsoft Word, и полез смотреть, что это за зверь такой. Потыкался, поглядел встроенную справку, - но мало что понял. Ничуть не похож был этот Basic на тот, что я изучал в школе. Разобрался, что можно рисовать формы с кнопочками и текстовыми полями, - но как заставить это работать, пока не понимал. Доступа в интернет не было, так что поглядеть примеры использования я не мог.

Так бы и забросил я это дело, но тут, в один прекрасный день, файлы Word стали открываться медленно, и при их открытии стала выскакивать какая-то ошибка. Стал разбираться - и обнаружил, что ошибка возникает при выполнении макроса из 20 строк, загадочным образом оказавшегося во всех моих документах. Поглядев код, я понял, что передо мной ничто иное, как макровирус, заражающий все открываемые файлы Word, и безуспешно пытающийся отправить какие-то данные по сети. (кстати, это был первый и последний раз, когда я видел макровирус, - с тех пор через меня прошли тысячи файлов Excel и Word, и я ни разу не встречал в них макровирусы). Это меня заинтересовало - если макрос может собрать данные с компьютера, сам себя скопировать в другие файлы, да ещё что-то отправить на другой IP адрес, - значит, при помощи макросов можно сделать практически что угодно!

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

Однажды, в 2006 году, мне реально понадобились навыки программирования на VBA. По работе, понадобилось создавать (рисовать в CorelDRAW) много однотипных планов эвакуации (это такие чертежи помещений со стрелочками, и специфическими значками). Рисовать-то их можно было и вручную, но, чтобы результат соответствовал ГОСТу, было необходимо соблюдать разные пропорции и расстояния между элементами. Двигать значки по листу, подгоняя «на глаз» рассстояние от линий и соседних значков, быстро надоело. А ещё надо было всё выравнивать, быстро рисовать и красиво соединять пунктирные линии, каждый раз выполнять предпечатную подготовку, и т.д. и т.п... В итоге, потратив 2 или 3 месяца на автоматизацию этого процесса, я добился сокращения времени изготовления чертежа в несколько раз. К тому же, приятно было смотреть на лица коллег, когда на их глазах происходили чудеса, - линии рисовались и двигались на экране сами, стрелки выравнивались и загибались, всё мелькало, и через минуту я уже вытаскивал из компьютера дискету, готовую к отправке к типографию (с двумя копиями файла, полностью готового к печати)

На дворе было лето 2008 года. Заняться мне было нечем, и я решил помочь с решением задач в Excel людям, обращающимся за советом на форумы. Втянулся я в это быстро - приятно было слышать благодарности от людей, которым моя «волшебная кнопка» сэкономила много часов однотипной работы. К тому же, помощь требовала совсем немного сил, - порой достаточно было написать 2-3 строки кода. Тут я начал понимать, что знаю в VBA и Excel ещё очень и очень плохо, - и стал учиться, разбираясь в решениях, предлагаемых более опытными коллегами.

Потребовалось 2 или 3 года, в течении которых я помогал на форумах всем желающим, чтобы начать чувствовать себя в Excel уверенно. Поначалу писал совсем простенькие макросы, потом - более сложные. Спустя год ко мне начали обращаться с заказами - тогда я готов был работать за копейки (ибо целью было не зарабатывание денег, а помощь людям). Первым более-менее серьёзным заказом, за который я взял плату, была программа для сотрудников приемной комиссии - пришлось реализовывать базу данных в Excel. За 3 недели мучений и переделок (заказала программу студентка, которая сама точно не знала, что ей нужно) программа была написана - и заработал я на этом около 3500 рублей. С тех пор со студентами я не работаю - денег мало, техзадания нет, куча просьб о переделке (потому что преподу что-то не понравилось), да и вообще неприятно осознавать, что программа будет запущена всего 1 раз, а потом ей никто пользоваться не будет.

В 2009 году я сделал сайт сайт. Сайтом это можно было назвать лишь с натяжкой - он состоял из одной страницы (вот как он выглядел в то время). Пользы от такого сайта, как вы понимаете, быть не могло, - те, кто заходил на сайт, и без того уже знали, чем я занимаюсь. А хотелось большего - чтобы сайт приносил пользу, как мне, так и своим посетителям. Поэтому мне в экстренном порядке пришлось изучать сайтостроение, - и, благодаря помощи друга, через несколько месяцев сайт приобрел движок в виде CMS Drupal (самому мне было бы это не осилить). Что публиковать на сайте, я тогда ещё не придумал, потому начал использовать его в качестве записной книжки - публиковать там полезные универсальные макросы и функции, чтобы не приходилось их каждый раз искать в разных файлах, вспоминая, когда и кому я делал подобное.

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

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

И начал я думать, как же увеличить количество заказов, - хотелось, чтобы моё хобби наконец-то начало приносить ощутимый доход. Опять пришлось удариться в сайтостроение - освоить основы SEO, дизайна, да и сайтостроительства в целом. И однажды понял я, чего до сих пор нехватало на сайте, - большой кнопки для оформления заказа. Недолго думая, в течении 5 минут эта кнопка (которую сейчас вы можете созерцать в левом верхнем углу страницы) была добавлена на все страницы сайта. Результат не заставил себя долго ждать - в течение месяца я получил заказов больше, чем за весь предыдущий год.

Наступил 2012 год. Количество заказов выросло до такого объема, что одному мне осилить их не было никакой возможности. Часть заказов я стал передавать своим коллегам (особенно крупные и сложные заказы), ибо всех денег всё равно не заработать, да и сидеть сутками за монитором не очень хочется. Попутно на основной работе (с 8:00 до 17:00 я работал инженером в местном интернет-провайдере) заметно выросла нагрузка, и я перестал успевать писать макросы в рабочее время. В итоге, на развитие сайта времени совсем не оставалось - вечерами только успевал разгребать часть заказов, и в почте стали копиться непрочитанные письма.

Пора было что-то менять в своей жизни - делать выбор между работой и программированием. И вот, в середине июля 2012 года, я этот выбор сделал - на основной работе написал заявление на увольнение, решив посвятить себя программированию (разработке макросов для Excel). С тех пор, свободного времени у меня более чем предостаточно, потому я планирую вновь заняться расширением сайта, и более активно работать над заказами (чтобы исключить ситуации, когда заказчики по нескольку недель ждали свои макросы).
Что из всего этого выйдет - пока не знаю, время покажет. Думаю, спрос на макросы для Excel будет сохраняться ещё как минимум 2-3 года, так что без хлеба с маслом я не останусь.

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

<спустя 4 года, решил продолжить статью>

И вот на дворе уже 2016 год. К моей радости, Microsoft пока не отказывается поддержки от VBA в Excel, потому, я продолжаю трудиться в этой сфере. Эти 4 года сильно изменили мою жизнь, — доходы выросли в несколько раз, я начал много путешествовать, на работу оставалось меньше времени. Количество заказов на макросы постоянно увеличивалось, потому я стал сотрудничать с несколькими программистами, которым передавал заказы, когда не справлялся сам из-за отсутствия времени. Кто-то из моих коллег (кому я отдавал заказы в работу) со временем пропадал, а другие, наоборот, все активнее сотрудничали со мной, — и теперь у меня есть команда, решающая любые задачи (один коллега берет простые макросы, и делает их быстро, другой делает сложные макросы с использованием нестандартных решений, третий занимается "мутными" объемными заказами, где надо пару недель обсуждать задание, и потом еще месяц это делать, четвёртый специализируется на формулах, пятый настраивает парсеры, и т.д., — у каждого своя сфера деятельности).

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

Поскольку мне удалось разделаться с «текучкой» (большим количеством мелких заказов, хоть приносящих и неплохой доход, но занимающих 100% времени), я стал уделять больше внимания разработке и продвижению универсальных надстроек для Excel . Сейчас в моём арсенале 9 таких надстроек, но успешно продаются только 5: FillDocuments (самая первая моя работа, до недавнего времени была в лидерах по доходам, и пользуется стабильным спросом, поскольку там реализовано уже всё, что только может пригодиться пользователям для заполнения документов), PastePictures (продается с 2012 года, но популярность стала набирать сравнительно недавно), Unification (3 года назад это была самая сложная из моих программ), Lookup (самая простенькая из моих надстроек, по сути являющаяся заменой формулы ВПР, — но очень популярная среди пользователей) и Parser (универсальный парсер для сбора данных с сайтов и файлов, самая навороченная из моих программ на сегодняшний день, — 17.600 строк кода). Касательно парсера, — ещё в 2013 году мне казалась абсолютно нереальной затея сделать что-то подобное (и я отказывал заказчикам, говоря о невозможности сделать универсальное решение для сайтов по типу Unification - программы обработки прайсов), но потом количество заказов на парсеры сайтов стало увеличиваться, и я решил попробовать, о чём ни разу не пожалел, — доходы от решений на базе этой надстройки превзошли все мои ожидания.

Но не все программы пользовались успехом. От продаж одной программы (YandexMarket) я вообще отказался, — сайт слишком часто менялся, программа требовала доработок, алгоритм поиска нужных данных был неочевиден, потом появилась капча, — и я решил, что не стоит тратить время на дальнейшее развитие программы, вернув деньги нескольким покупателям. Другие программы, такие как BarcodeScanner, Labels, SearchText, хоть и окупили потраченное на разработку время, и продолжают приносить доход, — но не идут ни в какое сравнение с пятеркой программ-лидеров.

По мере развития вышеописанных универсальных надстроек, сформировался так называемый «движок» программы, — набор макросов и элементов интерфейса, позволяющий быстро сделать готовое к продаже решение из любой идеи. Движок поначалу нужен был для поддержки обновлений (чтобы пользователь мог в одно нажатие проверить и установить обновление), позже он обрел функционал защиты (хакеры стали обращать внимание на мои решения, поскольку спрос на них рос с каждым годом, — и пришлось мне изобретать различные схемы защиты от нелегального использования, при том, что встроенная защита кода в Excel никуда не годится, ибо снимается за пару секунд). Попутно пришлось делать функционал активации и обновления программ на стороне сайта, - начал немного разбираться в PHP и MySQL, делая скрипты, взаимодействующие с движком программы.

Последние пару лет, основное время у меня уходит на обеспечение техподдержки (покупателей программ с каждым годом все больше), и на развитие надстройки-парсера, как самого популярного и перспективного из моих решений (добавляю новый функционал, публикую примеры настроенных парсеров). Мой уровень программирования, благодаря парсеру и новому движку программ, заметно вырос, — хоть мой код и 5 лет назад был вполне качественным и работал без сбоев, но теперь я более ответственно подхожу к оформлению кода, столкнувшись с необходимостью многолетней поддержки своих надстроек с многими тысячами строк кода. Сейчас, попутно со внедрением нового (многоязычного) движка во все надстройки, я произвожу рефакторинг (обновление) кода, делая его более простым, понятным, и универсальным. Кстати, насчёт многоязычности, — я решил продавать свои надстройки за пределами СНГ, и даже сделал отдельный сайт (чтобы выложить там только универсальные надстройки, с интерфейсом и описанием на разных языках), но пока всё лень этим заниматься. Может, когда-нибудь до этого руки и дойдут (а пока и из СНГ покупателей хватает)

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

<продолжение следует>


Книга: Использование макросов в Excel.

Страниц: 507

Формат: DJVU
Размер: 8.02 Mb

Несмотря на мощные функциональные возможности, обеспечиваемые пользовательским интерфейсом Excel, существует ряд задач, выполнение которых возможно только программным путем. Книга "Использование макросов в Excel” представляет собой введение в программирование на Excel VBA, содержащее примеры решения различных практических задач, возникающих при работе в Excel. Материал книги рассчитан на пользователей Excel, а также программистов, которые не знакомых с объектной моделью Excel. Наряду с разделами, посвященными разработке макросов для Excel 2002, здесь излагается вводный курс по написанию макросов и программ в среде Excel.

Книга: Интенсивный курс программирования в Excel за выходные

Издательство: Диалектика
Страниц: 421
Формат: DJVU
Размер: 12.6 Мб
Качество: Нормальное
Язык: Русский
Жанр: программирование
Год издания: 2004
ISBN: 5-8459-0687-3

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

Книга: Программирование на VBA 2002

Качество: Нормальное
Язык: Русский
Жанр: программирование

В книге содержится курс по программированию на Visual Basic for Applications (VBA), являющимся базовым языком в приложениях Microsoft Office (Word, Excel, Access, PowerPoint, FrontPage, Visio и др.). Книга предназначена для начинающих программировать в среде Windows с применением Word-, Excel-, PowerPoint-объектов. Часть книги посвящена вопросам разработки Office-приложений, использующих базы данных, хранимых как в отдельных файлах, так и на удаленных серверах. Материала книги достаточно для изучения основ языка Visual Basic и создания простых макросов, помогающих автоматизировать рутинную повторяющуюся работу с документами, электронными таблицами, диаграммами, презентациями и т.д., а также для разработки довольно сложных приложений обработки баз данных с использованием диалоговых окон, обеспечивающих пользователя самыми современными интерфейсными средствами. Большинство примеров в книге посвящены актуальным в настоящее время вопросам коммерческой деятельности, поэтому книга будет очень полезной менеджерам различных уровней, которым, по-видимому, и предназначен как Microsoft Office, так и встроенный язык программирования VBA.
Приложения в конце книги могут послужить удобным справочником при работе как с VBA, так и с обычным VB.

Книга: Профессиональное программирование на VBA в Excel 2003
Джон Уокенбах
Издательство: Вильямс
Формат: PDF
Размер: 11 Мб
Качество: Отличное
Язык: Русский
Год издания: 2005
ISBN: 5-8459-0771-3
К книге прилагается диск

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

Pdf-версия отредактирована и любезно предоставлена участником .

Книга: :
Джон Уокенбах
Издательство: Wiley
Формат: PDF
Страниц: 1308
Размер: 11,9 Мб
Качество: Отличное
Язык: Английский
Год издания: 2010
This book focuses on Visual Basic for Applications (VBA), the programming language built into Excel (and other applications that make up Microsoft Office). More specifically, it will show you how to write programs that automate various tasks in Excel. This book covers everything from recording simple macros through creating sophisticated user-oriented applications and utilities. This book does not cover Microsoft Visual Studio Tools for Office (VSTO). VSTO is a relatively new technology that uses Visual Basic .NET and Microsoft Visual C#. VSTO can also be used to control Excel and other Microsoft Office applications.
This is not a book for beginning Excel users. If you have no experience with Excel, a better choice might be Excel 2010 Bible, which provides comprehensive coverage of all the features of Excel. That book is meant for users of all levels.

Книга: : Профессиональное программирование на VBA в Excel 2010
Джон Уокенбах
Издательство: Диалектика
Формат: PDF
Страниц: 920
Размер: 22,1 Мб
Качество: Отличное
Язык: Русский
Год издания: 2010 Предмет рассмотрения этой книги - язык программирования Visual Basic for Applications (VBA), который встроен в Excel, а также в другие приложения, входящие в состав Microsoft Office. Здесь подробно описано создание программ, автоматизирую­щих выполнение различных задач в Excel, а также рассматривается широкий круг других тем - от написания простейших макросов до создания сложнейших приложений и ути­лит, рассчитанных на взаимодействие с пользователем. В этой книге нет описания программного пакета Microsoft Visual Studio Tools for Office (VSTO). Он представляет собой воплощение относительно новой технологии, ис­пользующей Visual Basic .NET и Microsoft Visual С#. Технология VSTO также может применяться для управления поведением программы Excel и других приложений Microsoft Office.

Книга не предназначена для начинающих пользователей Excel. Если у вас нет опыта работы с этим приложением, то прочтите сначала книгу Excel 2010. Библия пользо­вателя, в которой подробно рассказывается обо всех возможностях Excel (она адресована пользователям всех уровней).


Книга: Самоучитель VBA
Гарнаев А.
Издательство: bhv
Страниц: 512
Формат: html с картинками в rar
ISBN: 5-8206-0067-3
Размер: 2,22 Мб

Отличное

Язык: Английский
Год издания: 2009

Microsoft Excel is much more than just a spreadsheet. With the introduction of the Visual Basic Editor in Excel 97, followed by the significantly improved stability of Excel 2000, Excel became a respected development platform in its own right. Excel applications are now found alongside those based on C++, Java, and the .NET development platform, as part of the core suite of mission-critical corporate applications.
Unfortunately, Excel is still too often thought of as a hobbyist platform, that people only develop Excel applications in their spare time to automate minor tasks. A brief look at many Excel VBA books seems to confirm this opinion. These books focus on the basics of automating Excel tasks using VBA. This book is the first of its kind in providing a detailed explanation of how to use Excel as the platform for developing professional quality applications.
While most other major development platforms seem to have a de facto standard text that explains the commonly agreed best practices for architecting, designing, and developing applications using that platform, until now Excel has not. This book attempts to fill that gap. The authors are professional Excel developers who create Excel-based applications for clients ranging from individuals to the largest multinational corporations. This book explains the approaches we use when designing, developing, distributing, and supporting the applications we write for our clients.
Эту книгу предоставил пользователь

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

Формат файла: .chm

Справочник по функциям листа Excel (532,2 KiB, 15 462 скачиваний)

VBA Программирование в MSOffice - очень хороший учебник для начинающих программировать в VBA. Книга написана сертифицированным преподавателем Microsoft Office доступным для понимания языком, снабжена грамотными листингами кодов. Учебник поможет освоить программирование не только в Microsoft Excel, но и Microsoft Word и Microsoft Project.

Формат файла: .pdf

VBA Программироваие в MSOffice (4,1 MiB, 26 659 скачиваний)
У Вас нет прав для скачивания этого файла. Возможно, Вы не зарегистрированы на сайте. Зарегистрируйтесь и попробуйте скачать снова.

Уокенбах Дж. Профессиональное программирование в VBA Excel 2003 - пожалуй самый популярный учебник для начинающих. Многие начинали именно с него. Правда, в печатной версии данного учебника использованы листинги кодов, которые не всегда нужно принимать на веру - очень часто там встречаются опечатки и вместо английских символом встречаются русские. Поэтому лично я бы посоветовал не копировать коды напрямую из книги, а переписывать их вручную в редакторе VBA. Так и запомнится лучше и избавите себя от поиска ошибок.

Формат файла: .pdf

Office 2007. Самоучитель - Если Вы решили поближе познакомиться с интерфейсом и основными возможностями приложений Microsoft Office, то советую почитать данную книгу. В ней описано все необходимое для успешной работы в таких приложениях как: Excel, Word, Outlook, Power Point, Access. После прочтения Вы сможете создавать красивые презентации и информативные графики, научитель создавать задачи в Outlook и базы в Access.

Формат файла: .pdf

Русская справка по Visual Basic for Application(VBA) - Это официальная справка по Visual Basic for Application(VBA), которая была включена в пакет Microsoft Office 97. Тогда справка была еще русифицирована. Ни для кого не секрет, что сейчас во всех версиях офиса справка по VBA доступна только на английском языке, независимо от локализации. А по буржуйски не все могут читать(даже сносно, как показывает практика).
Хочу сразу предупредить - т.к. справка предназначена для довольно старой версии, в ней описаны не все методы и свойста. Но основная их масса все же описана и, надеюсь, данная справка поможет Вам в начальном изучении VBA.

Формат файла: .файл справки

RUS_VBA.zip (1,1 MiB, 9 164 скачиваний)
У Вас нет прав для скачивания этого файла. Возможно, Вы не зарегистрированы на сайте. Зарегистрируйтесь и попробуйте скачать снова.

Объекты Shell_RegExp и пр - целый сборник примеров работы с такими объектами как: Shell, RegExp, FileSystemObject, WshShell, Dictionary, WshNetwork, WScript, константы и функции WScript. Все примеры структурированы по разделам и сделаны в качестве справки по свойствам и методам каждого из объектов. Очень удобно, если не очень часто применяете в работе эти объекты и что-то забылось.

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

Написание макросов в Excel

Код макроса Excel написанный на языке Visual Basic for Application (VBA), а его выполняет инструмент приложения, к которому он присоединен. Большинство этих инструментов не доступно на уровне окна программы Excel. Как написать макрос.

Теперь продемонстрируем на примере информацию о том, как писать, редактировать и выполнять код макроса.

Чтобы написать макрос:


Примечание. Если в главном меню отсутствует закладка «РАЗРАБОТЧИК», тогда ее необходимо активировать в настройках: «ФАЙЛ»-«Параметры»-«Настроить ленту». В правом списке «Основные вкладки:» активируйте галочкой опцию «Разработчик» и нажмите на кнопку ОК.



Возможности макросов в Excel

Макросы позволяют автоматизировать процессы работы с документами и не только… Они могут практически одновременно выполнить тысячи инструментов за одну операцию (даже по одному клику мышкой). Таким образом расширяются возможности работы с программой.

С помощью макросов пользователь может сам создать свой инструмент, которого ему недостает в арсенале программы Excel. Например, когда нужно автоматически выделить каждую вторую строку одним кликом. Или нужно одновременно создать сразу определенное количество копий определенного рабочего листа. Список потребностей пользователей в автоматизации процессов работы можно продолжать до бесконечности.

Если бы не было возможности создавать макросы во всех программах, входящих в пакет MS Office. То множество операций в процессе рутинной работы пользователям приходилось бы выполнять вручную (выделять через одну строку кликая по каждому второму заголовку мышкой или копировать вставлять по одному листу). Ручная работа в лучшем случаи приводить к потере огромного количества времени, а в худшем – ведет к ошибкам или даже потере ценных данных.

Возможность создавать макросы и автоматизировать рабочие процессы бережет вашу работу от лишних потерь времени и возникновения ошибок. Далее рассмотрим, как создать макрос, который безошибочно и автоматически выполнить рутинную работу в один клик мышкой. Так же рассмотрим в каких местах рабочей книги Excel можно создавать и хранить макросы. Как их запустить и выполнить, а также как их максимально оптимизировать под свои потребности.

Excel предоставляет большой и изобильный арсенал инструментов для хранения и обработки огромного количества информации с данными. Хотя для самой универсальной аналитической программы Excel – хранение данных само по себе менее интересно, чем возможность их обрабатывать, структурировать и анализировать с презентацией в отчетах. Для этих целей служит сильнейший аналитических инструмент по обработке данных такой как «Сводные таблицы». Но и его можно еще более усовершенствовать с помощью макросов. И тогда возможности сводных таблиц не знают границ.

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

Что такое VBA

Программирование в Excel осуществляется посредством языка программирования Visual Basic for Application, который изначально встроен в самый известный табличный процессор от Microsoft.

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

Недостатком программы являются проблемы, связанные с совместимостью различных версий. Они обусловлены тем, что код программы VBA обращается к функциональным возможностям, которые присутствуют в новой версии продукта, но отсутствуют в старой. Также к минусам относят и чрезмерно высокую открытость кода для изменения посторонним лицом. Тем не менее Microsoft Office, а также IBM Lotus Symphony позволяют пользователю применять шифрование начального кода и установку пароля для его просмотра.

Объекты, коллекции, свойства и методы

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

Главным из них является Application, соответствующий самой программе Excel. Затем следуют Workbooks, Worksheets, а также Range. Например, для обращения к ячейке A1 на конкретном листе следует указать путь с учетом иерархии.

Что касается понятия "коллекция", то это группа объектов того же класса, которая в записи имеет вид ChartObjects. Ее отдельные элементы также являются объектами.

Следующее понятие — свойства. Они являются необходимой характеристикой любого объекта. Например, для Range — это Value или Formula.

Методы — это команды, показывающие, что требуется сделать. При написании кода в VBA их необходимо отделять от объекта точкой. Например, как будет показано в дальнейшем, очень часто при программировании в "Эксель" используют команду Cells(1,1).Select. Она означает, что необходимо выбрать ячейку с координатами

Вместе с ней нередко используется Selection.ClearContents. Ее выполнение означает очистку содержимого выбранной ячейки.

Как начать

Затем необходимо перейти в приложение VB, для чего достаточно воспользоваться комбинацией клавиш «Alt» и «F11». Далее:

  • в строке меню, расположенном в верхней части окна, нажимают на иконку рядом с иконкой Excel;
  • выбирают команду Mudule;
  • сохраняют, нажав на иконку с изображением ;
  • пишут, скажем так, набросок кода.

Он выглядит следующим образом:

Sub program ()

"Наш код

Обратите внимание, что строка «"Наш код» будет выделена другим цветом (зеленым). Причина в апострофе, поставленном в начале строки, который обозначает, что далее следует комментарий.

Теперь вы можете написать любой код и создать для себя новый инструмент в VBA Excel (примеры программ см. далее). Конечно, тем, кто знаком с азами Visual Basic, будет намного проще. Однако даже те, кто их не имеет, при желании смогут освоиться достаточно быстро.

Макросы в Excel

За таким названием скрываются программы, написанные на языке Visual Basic for Application. Таким образом, программирование в Excel — это создание макросов с нужным кодом. Благодаря этой возможности табличный процессор Microsoft саморазвивается, подстраиваясь под требования конкретного пользователя. Разобравшись с тем, как создавать модули для написания макросов, можно приступать к рассмотрению конкретных примеров программ VBA Excel. Лучше всего начать с самых элементарных кодов.

Пример 1

Задача: написать программу, которая будет копировать значение содержимое одной ячейки и затем записывать в другую.

Для этого:

  • открывают вкладку «Вид»;
  • переходят на пиктограмму «Макросы»;
  • жмут на «Запись макроса»;
  • заполняют открывшуюся форму.

Для простоты в поле «Имя макроса» оставляют «Макрос1», а в поле «Сочетание клавиш» вставляют, например, hh (это значит, что запустить программку можно будет блиц-командой «Ctrl+h»). Нажимают Enter.

Теперь, когда уже запущена запись макроса, производят копирование содержимого какой-либо ячейки в другую. Возвращаются на исходную пиктограмму. Нажимают на «Запись макроса». Это действие означает завершение программки.

  • вновь переходят на строку «Макросы»;
  • в списке выбирают «Макрос 1»;
  • нажимают «Выполнить» (то же действие запускается начатием сочетания клавиш «Ctrl+hh»).

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

Имеет смысл увидеть, как выглядит код. Для этого вновь переходят на строку «Макросы» и нажимают «Изменить» или «Войти». В результате оказываются в среде VBA. Собственно, сам код макроса находится между строками Sub Макрос1() и End Sub.

Если копирование было выполнено, например, из ячейки А1 в ячейку C1, то одна из строк кода будет выглядеть, как Range(“C1”).Select. В переводе это выглядит, как «Диапазон(“C1”).Выделить», иными словами осуществляет переход в VBA Excel, в ячейку С1.

Активную часть кода завершает команда ActiveSheet.Paste. Она означает запись содержания выделенной ячейки (в данном случае А1) в выделенную ячейку С1.

Пример 2

Циклы VBA помогают создавать различные макросы в Excel.

Циклы VBA помогают создавать различные макросы. Предположим, что имеется функция y=x + x 2 + 3x 3 - cos(x). Требуется создать макрос для получения ее графика. Сделать это можно только, используя циклы VBA.

За начальное и конечное значение аргумента функции берут x1=0 и x2=10. Кроме того, необходимо ввести константу — значение для шага изменения аргумента и начальное значение для счетчика.

Все примеры макросов VBA Excel создаются по той же процедуре, которая представлена выше. В данном конкретном случае код выглядит, как:

Sub programm()

shag = 0.1

Do While x1 < x2 (цикл будет выполняться пока верно выражение x1 < x2)

y=x1 + x1^2 + 3*x1^3 - Cos(x1)

Cells(i, 1).Value = x1 (значение x1 записывается в ячейку с координатами (i,1))

Cells(i, 2).Value = y (значение y записывается в ячейку с координатами (i,2))

i = i + 1 (действует счетчик);

x1 = x1 + shag (аргумент изменяется на величину шага);

End Sub.

В результате запуска данного макроса в "Эксель" получаем два столбца, в первом из которых записаны значения для x, а во втором — для y.

Затем по ним строится график способом, стандартным для "Эксель".

Пример 3

Для реализации циклов в VBA Excel 2010, как и в других версиях, наряду с уже приведенной конструкцией Do While используется For.

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

Сначала нужно создать макрос, как описано выше. Далее записываем сам код. Считаем, что нас интересуют значения для 10 ячеек. Код выглядит следующим образом.

For i = 1 to 10 Next

Команда переводится на «человеческий» язык, как «Повторять от 1 до 10 с шагом один».

Если ставится задача получить столбец с квадратами, например, всех нечетных чисел из диапазона от 1 до 11, то пишем:

For i = 1 to 10 step 1 Next.

Здесь step — шаг. В данном случае он равен двум. По умолчанию отсутствие этого слова в цикле означает, что шаг единичный.

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

В целом код будет выглядеть, как:

Sub program()

For i = 1 To 10 Step 1 (можно записать просто For i = 1 To 10)

Cells(i, 1).Value = i ^ 2 (т.е. в ячейку (i,1) записывается значение квадрата i)

Next (в некотором смысле играет роль счетчика и означает еще один запуск цикла)

End Sub.

Если все сделано правильно, в том числе запись и запуск макроса (см. инструкцию выше), то при его вызове каждый раз будет получаться столбец заданного размера (в данном случае состоящий из 10 ячеек).

Пример 4

В повседневной жизни сплошь и рядом возникает необходимость принять то или иное решение в зависимости от какого-то условия. Не обойтись без них и в VBA Excel. Примеры программ, где дальнейший ход выполнения алгоритма выбирается, а не предопределен изначально, чаще всего используют конструкцию If …Then (для сложных случаев) If …Then …END If.

Рассмотрим конкретный случай. Предположим, необходимо создать макрос для "Эксель", чтобы в ячейку с координатами (1,1) было записано:

1, если аргумент положительный;

0, если аргумент нулевой;

-1, если аргумент отрицательный.

Создание такого макроса для "Эксель" начинается стандартным способом, через использование «горячих» клавиш Alt и F11. Далее записывается следующий код:

Sub program()

x= Cells(1, 1).Value (эта команда присваивает x значение содержимого ячейки с координатами (1, 1))

If x>0 Then Cells(1, 1).Value = 1

If x=0 Then Cells(1, 1).Value = 0

If x<0 Then Cells(1, 1).Value = -1

End Sub.

Остается запустить макрос и получить в "Эксель" нужное значение для аргумента.

Функции VBA

Как вы уже могли заметить, программировать в самом известном табличном процессоре Microsoft не так уж сложно. Особенно, если научиться применять функции VBA. Всего в этом языке программирования, созданном специально для написания приложений в "Эксель" и Word, около 160 функций. Их можно разделить на несколько больших групп. Это:

  • Математические функции. Применив их к аргументу, получают значение косинуса, натурального логарифма, целой части и пр.
  • Финансовые функции. Благодаря их наличию и используя программирование в Excel, можно получать эффективные инструменты для ведения бухгалтерского учета и осуществления финансовых расчетов.
  • Функции обработки массивов. К ним относятся Array, IsArray; LBound; UBound.
  • Функции VBA Excel для строки. Это достаточно многочисленная группа. В нее входят, например, функции Space для создания строки с числом пробелов, равных целочисленному аргументу, или Asc для перевода символов в код ANSI. Все они имеют широкое применение и позволяют работать со строками в "Эксель", создавая приложения, значительно облегчающие работу с этими таблицами.
  • Функции преобразования типа данных. Например, CVar возвращает значение аргумента Expression, преобразовав его в тип данных Variant.
  • Функции работы с датами. Они значительно расширяют стандартные Так, функция WeekdayName возвращает название (полное или частичное) дня недели по его номеру. Еще более полезной является Timer. Он выдает число секунд, которые прошли с полуночи до конкретного момента дня.
  • Функции для преобразования числового аргумента в разные системы счисления. Например, Oct выдает в восьмеричное представление числа.
  • Функции форматирования. Важнейшей из них является Format. Она возвращает значение типа Variant с выражением, отформатированным согласно инструкциям, которые заданы в описании формата.
  • и пр.

Изучение свойств этих функций и их применение позволит значительно расширить сферу применения "Эксель".

Пример 5

Попробуем перейти к решению более сложных задач. Например:

Дан бумажный документ отчета фактического уровня издержек предприятия. Требуется:

  • разработать его шаблонную часть посредством табличного процессора "Эксель";
  • составить программу VBA, которая будет запрашивать исходные данные для ее заполнения, осуществлять необходимые расчеты и заполнять ими соответствующие ячейки шаблона.

Рассмотрим один из вариантов решения.

Создание шаблона

Все действия осуществляются на стандартном листе в Excel. Резервируются свободные ячейки для внесения данных по названию компании-потребителя, сумме издержек, их уровня, товарооборота. Так как количество компаний (обществ), относительно которых составляется отчет, не зафиксировано, ячейки для внесения значений по итогам и ФИО специалиста заранее не резервируют. Рабочему листу присваивается новое название. Например, "Օтчет".

Переменные

Для написания программы автоматического заполнения шаблона, необходимо выбрать обозначения. Они будут использоваться для переменных:

  • NN- номер текущей строки таблицы;
  • TP и TF - планируемый и фактический товарооборот;
  • SF и SP - фактическая и планируемая сумма издержек;
  • IP и IF - планируемый и фактически уровень издержек.

Обозначим теми же буквами, но с «приставкой» Itog накопление итога по данному столбцу. Например, ItogTP - касается столбца таблицы, озаглавленного, как «планируемый товарооборот».

Решение задачи с использованием программирования на VBA

Используя введенные обозначения, получаем формулы для отклонений. Если требуется осуществить расчет в % имеем (F - P) / P * 100, а в сумме — (F - P).

Результаты этих вычислений можно лучше всего сразу внести в соответствующие ячейки таблицы "Эксель".

Для итогов по факту и прогнозу получают по формулам ItogP=ItogP + P и ItogF=ItogF+ F.

Для отклонений используют = (ItogF - ItogP) / ItogP * 100, если расчет ведется в процентах, а в случае суммарной величины — (ItogF - ItogP).

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

Перед запуском созданной программы, требуется сохранить рабочую книгу, например, под названием "Отчет1.xls".

Клавишу «Создать отчетную таблицу» требуется нажать всего 1 раз после ввода заголовочной информации. Следует знать и другие правила. В частности, кнопка «Добавить строку» должна нажиматься каждый раз после ввода в таблицу значений по каждому виду деятельности. После занесения всех данных требуется нажать кнопку «Закончить» и затем переключиться в окно "Эксель".

Теперь вы знаете, как решать задачи для Excel с помощью макросов. Умение применять vba excel (примеры программ см. выше) может понадобиться и для работы в среде самого популярного на данный момент текстового редактора "Ворд". В частности, можно путем записи, как показано в самом начале статьи, или через написание кода создавать кнопки меню, благодаря которым многие операции над текстом можно будет осуществлять нажатием дежурных клавиш или через вкладку "Вид" и пиктограмму "Макросы".







2024 © gtavrl.ru.