Excel 2000".

Почему не просто "Мир Excel 2000"? Видимо, потому что я предпочитаю смотреть на все, что происходит в Excel , с объектной точки зрения, рассматривать все происходящее как действия над объектами. Да и описанию самих объектов в этой книге уделяется достаточно много внимания. При этом в круг рассмотрения входят не только объекты самого Excel . Мир объектов Excel более широк. Так или иначе, в рассмотрении появляются общие объекты Office 2000, объекты других приложений, в книге, например, много внимания уделяется связи Excel и Access. Помимо объектов Excel в книге подробно рассматриваются еще две группы объектов - ADO и OWC. Объекты ADO , позволяющие организовать доступ к базам данных, несомненно, входят в мир Excel , поскольку, чаще всего, Excel является тем приложением, где обрабатываются данные, хранимые в различных источниках. Компоненты OWC, обладающие функциональностью Excel , - их объектная модель - это тоже часть мира объектов Excel . Без этих объектов не обойтись, если Ваше решение переносится в интранет или интернет , и Вы захотите создать Web -узел, страницы которого обладают функциональностью Excel документов.

Что же можно найти в этой книге, и кому она предназначена?

Эта книга предназначена тем, кто создает решения на базе Excel . Конечно, в первую очередь речь идет о тех, кто уже использует программирование на VBA и VBScript при создании своих решений. Но я думаю, что и те, кто давно работает в Excel , но еще не использовал программные способы настройки своих решений, могут начать с этой книги, хотя, предупреждаю, требуется определенная программистская подготовка.

Первые две лекции посвящены началам программирования в Excel . Они, надеюсь, доступны опытным пользователям и начинающим программистам. Думаю, что их с интересом прочтут и те, кто занимается обучением программированию в любой среде программирования. Я высказываю и пытаюсь обосновать здесь "крамольную" мысль о том, что Excel является прекрасной средой начального обучения программированию в школе и в вузах. Надеюсь, что и опытные программисты найдут здесь кое-что полезное для себя, особенно, во второй главе, адресованной математикам.

Глава 3 дает описание объектной модели Excel . Подробно рассмотрены все основные действующие лица этой модели - объекты Application , WorkBook, WorkSheet, Chart , Range и другие. Понятно, что при раскрытии этой темы без технических деталей не обойтись, поэтому чтение главы довольно утомительно, но как справочный материал, она, надеюсь, будет весьма полезной.

Базы данных и другие источники данных - это одна из ведущих тем этой книги. Глава 4 " Excel и базы данных " начинает эту тему. В этой же главе дается знакомство с приложением Access, на примере показано, как строится база данных в Access, изучаются связи Excel и Access.

Пятая и шестая главы книги посвящены объектам ADO . Уже то, что этим объектам посвящены две главы, говорит о степени подробности рассмотрения этой темы. Объекты ADO задают интерфейс между самыми разнообразными источниками данных и клиентским приложением, где эти данные обрабатываются. Таким приложением совсем не обязательно должен быть Excel , сфера применения объектов ADO значительно шире. Но Excel это одна из наиболее подходящих кандидатур на роль такого клиентского приложения. Чтение этих глав требует определенной подготовки и ориентированно на более продвинутых программистов.

Седьмая глава книги посвящена разработке интерактивных документов. Она носит в определенном смысле центральный характер. В ней рассматривается весь процесс создания интерактивного документа Excel . Этот документ можно считать примером создаваемого в Excel типичного решения, в котором программный проект играет определяющую роль. Предлагаемое решение использует базу данных Access и объекты ADO для организации связи с базой данных. Здесь же обсуждается и ряд других вопросов, важных в практической работе, начиная от организации интерфейса пользователя до получения печатной формы документа.

Глава 8 посвящена вопросам, возникающим при анализе офисной деятельности. В ней делается попытка сочетать содержательное рассмотрение, например, рассмотрение того, как проводить анализ типа "Что, если …" с рассмотрением средств Excel , используемых в таком анализе. Здесь рассматриваются сводные таблицы и сводные диаграммы, сценарии , методы прогнозирования и многое другое.

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

В главе 10 в рассмотрение вводятся новые объекты, тесно связанные с Excel . В этой главе рассматриваются Office Web Components - компоненты OWC. По моему мнению, эти компоненты являются лучшим продуктом, созданным Microsoft в области компонентного программирования. Они дают возможность добавить функциональность Excel в свои решения без использования самого Excel и других приложений Office 2000. Основное предназначение этих компонент - обеспечение корпоративной работы с документами в интрасетях, что позволяет создавать интерактивные страницы Web -узлов, обладающие функциональностью Excel . При рассмотрении этих компонент большое внимание уделяется программной работе с этими компонентами, возможности программной настройки Web -документов, использующих эти компоненты.

Глава 11 посвящена введению в Web - программирование . Я подробно рассматриваю процесс создания интерактивного Web -документа. Ключевым словом здесь является " интерактивность ", поскольку, по большому счету, вся эта книга о том, как придать нужную интерактивность создаваемым документам. Глава носит вполне самостоятельный характер, но, по сути, является естественным продолжением двух тем, рассматриваемых в главах 7 и 10, поскольку с одной стороны речь идет о создании интерактивного документа, с другой - документа Web , страницы которого могут обладать функциональностью Excel . Замечу, что при рассмотрении вопросов создания интерактивного очередь , на школьников, но не только на них. Большинство игр относится к классу "развивающих" игр, направленных на развитие логического мышления. Среди игр есть вариации известных игр - Lines, Tetris, Digger, игры-головоломки, известная карточная игра "Подкидной дурак" и другие игры.

Завершая предисловие, хочу сказать, что предлагаемый курс тесно связан с книгами серии "Офисное программирование ", вышедшими в издательстве "Русская редакция". Есть явные и неявные ссылки в тексте многих глав:

  1. "VBA в Office 2000. Офисное программирование,
  2. "Средства разработки VBA-программиста". Офисное программирование,
  3. Мир объектов Excel 2000. Средства разработки VBA-программиста.

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

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

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

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

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