Бейсик язык программирования для чайников в excel. Знакомство с программированием в Excel

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

В дополнение к советам, как научиться писать макросы 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, и наконец-то сделать видеоинструкции к своим программам (мне не лень и пару недель подряд добавлять в программу новый функционал, в то время как пользователи и с имеющимся разобраться не могут, ввиду отсутствия полноценной справки. Ну не люблю я записывать видеоролики))
Ну и пора уже выходить на международный рынок, раз все мои программы стали многоязычными (хотя перевод есть только на английский пока, и то частично)

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

Инструкция

Запустите Microsoft Office Excel. Если необходимо, создайте новый документ. Для этого нажмите клавиши Ctrl+N или разверните меню «Файл» и выберите пункт «Создать...». Затем кликните по ссылке «Чистая книга» в панели «Создание книги».

Откройте окно редактора Visual Basic. Для этого нажмите сочетание клавиш Alt+F11 или выберите пункт «Редактор Visual Basic» в разделе «Макрос» меню «Сервис». Там вы увидите панель проекта, отображающую дерево объектов данной книги Excel, а также содержащиеся в ней формы, модули и модули классов.

Создайте формы, если это необходимо. В главном меню кликните по пункту Insert, а затем UserForm. В разделе Forms панели проекта добавится новый элемент. При создании форма будет автоматически открыта. Мышью переносите элементы управления из панели Toolbox в окно формы. Изменяйте их размеры и положение. После выделения мышью меняйте их свойства в панели Properties. Сохраняйте формы, нажав Ctrl+S.

Создайте нужное количество модулей или модулей классов. Для этого выбирайте пункты Module или Class Module в разделе Insert главного меню. Откройте окна редактирования кода нужных модулей или форм, дважды кликнув по соответствующим им элементам в окне проекта.

Добавьте декларации классов в модули классов. Определите их при помощи ключевого слова Class:
Class CSampleClass
End Class

В определения классов добавьте методы, а в модули - заготовки функций и процедур. Функции объявляются с помощью ключевого слова Function, после которого следует имя и набор параметров, через запятую, заключенных в скобки. Например:
Function SampleFunction(a, b, c)
End Function
Аналогично (только при помощи ключевого слова Sub) объявляются процедуры:
Sub SampleProcedure(a, b)
End Sub

Объявите члены классов, а также глобальные и локальные (в функциях и методах) переменные. Для этого используйте предложение Dim...As (после ключевого слова As указывается тип переменной). Например, объявление переменной oWB, хранящей ссылку на объект книги, может выглядеть так:
Dim oWB As Excel.Workbook
Указав размерность в круглых скобках, можно задекларировать массив:
Dim aWBooks(10) As Excel.Workbook

Реализуйте алгоритм работы программы, внеся изменения в код функций, процедур, методов классов. Используйте структуры управления Visual Basic для контроля потока исполнения. Работайте с собственными структурами данных, объектами созданных форм встроенными объектами Excel.

Источники:

  • как создать документ в excel

Visual Basic это среда для разработки ПО, которое разрабатывается компанией Microsoft, включает в себя язык программирования. Он унаследовал стиль и частично синтаксис своего предшественника, языка «Бейсик». Среда разработки Visual Basic включает в себя инструменты работы с конструированием пользовательского интерфейса.

Вам понадобится

Инструкция

Запустите программу Visual Studio, создайте проект , чтобы выполнить создание программы Visual Basic. Для этого выберите меню «Файл», а в нем команду «Создать проект ». В диалоговом окне выберите опцию «Приложение Windows» и щелкните по кнопке «ОК». В интерфейсе будет открыта форма. По умолчанию проект будет назван WindowsApplication1. Проект Visual Basic – это место, где хранятся части программы, и поддерживается их организация. Форма, которая открывается при создании проект а, представляет собой то окно, которое будет отображено при запуске программы. Соответственно, если в программе несколько окон, значит и в проект е может содержаться несколько форм.

Добавьте на форму элементы управления с панели элементов. Она располагается в левой части окна, содержит в себе несколько вкладок, в том числе «Все формы», «Компоненты», «Данные». В каждой вкладке есть определенный набор операций, который представляет элементы управления, либо компоненты, которые могут быть добавлены в приложении при создании проект а в Visual Studio.

Выделите панель элементов, щелкните по вкладке «Все формы», перетащите в левый верхний угол вашей формы элемент управления «Панель». Аналогично переместите в проект программы Visual Basic элемент «Текстовая область». Чтобы изменить его положение, просто перетащите его левой кнопкой мыши в нужное место формы.

Аналогично выполните добавление кнопок, справа от текстового блока. Далее выберите элемент, соответствующий разновидности проект а, например, «Web-браузер» и поместите его под панелью. Каждый добавленный элемент управления содержит специальный код, который определяет его внешний вид, а также задачи, которые выполняются данным элементом. Вы можете создать собственный код, например, для кнопки, чтобы изменить ее внешний вид, добавить выполнение определенной задачи, но это трудоемкий процесс. Гораздо проще выполнить это с помощью редактирования проект а в Visual Basic.

Далее выполните настройку внешнего вида программы, добавьте код, который определяет их поведение. По необходимости добавьте пользовательские элементы управления. Далее проведите пробный запуск и тестирование вашей программы, по необходимости вернитесь в конструктор проект а Visual Basic и исправьте недостатки.

Видео по теме

Основное назначение приложения Microsoft Office - работа с данными в электронных таблицах. Как правило, это численные данные, но иногда ячейки содержат и текстовые константы. Кроме того, текст используется и при оформлении таблиц, поэтому необходимость организовать перенос по словам возникает время от времени при работе и в табличном редакторе.

Инструкция

Запустите 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 (примеры программ см. выше) может понадобиться и для работы в среде самого популярного на данный момент текстового редактора "Ворд". В частности, можно путем записи, как показано в самом начале статьи, или через написание кода создавать кнопки меню, благодаря которым многие операции над текстом можно будет осуществлять нажатием дежурных клавиш или через вкладку "Вид" и пиктограмму "Макросы".

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

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

А теперь хватит воды, приступим к практике.

Создадим нашу первую программу в Excel и убедимся, что это легко и просто. Задача будет следующей – программа должна копировать значение с одной ячейки и вставлять в другую. Сделать это вручную элементарно. Поверьте написать нашу программу не сложнее, так как в этот раз мы пойдём по короткому пути, а именно запишем макрос. Для этого во вкладке «Вид» находим пиктограмму «Макросы» и жмём сточку «Запись макроса».

Получаем форму.

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

После чего остановим «Запись макроса» и сразу же там выбираем строку «Макросы», где видим, список наших макросов. Чтобы макрос запустить необходимо его выбрать и нажать «Выполнить». Другой способ это выполнить заранее указанное сочетание клавиш «Ctrl+h». Каждый раз при запуске макроса он будет выполнять действия, записанные в него ранее.

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

Макрос сохраняется вместе с книгой, в которой был создан, хотя это не обязательно, так как их можно переносить и в другие книги. Давайте разбёрём значение каждой строчки внутри макроса.

Всё, что записано в строке после верхней кавычки «’» - закомментировано и кодом исполнения не является. В комментариях обычно пишут описания программы. Первая строчка кода, а именно по порядку, последовательно выполняется макрос, от строчки к строчке, «Selection.Copy», если перевести, звучит «Выделение.Копировать». То есть копируется выделенная область. Вторая «Range(“C1”).Select» - Диапазон(“C1”).Выделить» - переход к ячейке «C1». «ActiveSheet.Paste» - «АктивныйЛист. Вставить» - вставляем в выделенную ячейку «С1» скопированное значение.

Теперь удалим этот код и запишем свой.

Мы записали четыре строки, где « a =1, b = 2» являются операции присвоения переменным «a и b» значений «1 и 2» соответственно, переменной «с» мы присвоили результат сложения «a и b». А строка «ActiveCell.Value = c», если перевести «АктивнаяЯчейка. Значение = с», то есть записать в активную ячейку значение переменной «с». Далее выполняем сохранение макроса – «Ctrl+S», переходим в лист Excel и выполняем блиц-команду вызова макроса «Ctrl+h».