Руководство по использованию Visual Basic для приложений

Одним из самых выдающихся качеств Visual Basic является то, что это полный среда разработки. Что бы вы ни хотели сделать, в Visual Basic есть «вкус», который поможет вам сделать эту работу! Вы можете использовать Visual Basic для настольных и мобильных устройств, а также для удаленной разработки (VB.NET), создания сценариев (VBScript) и разработки Office (VBA !) Если вы пробовали VBA и хотите узнать больше о том, как его использовать, это учебник для вас. (Этот курс основан на версии VBA, найденной в Microsoft Office 2010.)

Если вы ищете курс в Microsoft Visual Basic .NET, вы также нашли правильное место. Ознакомьтесь с: Visual Basic .NET 2010 Express - учебное пособие «С нуля»

VBA как общая концепция будет рассмотрена в этой статье. В VBA есть больше, чем вы думаете! Вы также можете найти статьи о сестрах Office VBA:

Существует два основных способа разработки программ, которые могут работать с приложениями Office: VBA и VSTO. В октябре 2003 года Microsoft представила расширение для профессиональной среды программирования Visual Studio .NET под названием Visual Studio Tools for Office - VSTO. Но хотя VSTO использует значительные преимущества .NET в Office, VBA остается более популярным, чем VSTO. VSTO требует использования профессиональной или более поздней версии Visual Studio - которая, вероятно, будет стоить вам дороже, чем приложение Office, которое вы используете - в дополнение к приложению Office. Но поскольку VBA интегрирована с приложением Office, вам больше ничего не нужно.

instagram viewer

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

В своей документации Microsoft отмечает, что в основном есть три причины использовать VBA:

-> Автоматизация и повторение - компьютеры могут делать одно и то же снова и снова, намного лучше и быстрее, чем люди.

-> Расширения для взаимодействия с пользователем - Хотите ли вы точно предложить, как кто-то должен отформатировать документ или сохранить файл? VBA может сделать это. Вы хотите проверить, что кто-то входит? VBA тоже может это сделать.

-> Взаимодействие между приложениями Office 2010 - более поздняя статья в этой серии называется Word и Excel, работающими вместе. Но если это то, что вам нужно, вы можете рассмотреть Автоматизация делопроизводствато есть, написание системы с использованием VB.NET, а затем, при необходимости, с использованием функций из приложения Office, таких как Word или Excel.

Microsoft заявила, что они будут продолжать поддерживать VBA, и это заметно в официальный План развития Microsoft Office 2010. Таким образом, у вас есть столько гарантий, сколько Microsoft когда-либо предоставляет, что ваши инвестиции в разработку VBA не устареют в ближайшем будущем.

С другой стороны, VBA - последний оставшийся продукт Microsoft, который зависит от технологии VB6 «COM». Сейчас более двадцати лет! В человеческие годы это сделало бы его старше, чем Лестат Вампир. Вы можете видеть это как «испытанный, проверенный и истинный», или вы можете думать об этом как «древний, изношенный и устаревший». Я склоняюсь к первому описанию, но вы должны знать о фактах.

Первое, что нужно понять, это отношения между приложениями VBA и Office, такими как Word и Excel. Приложение Office представляет собой хозяин для VBA. Программа VBA никогда не может быть выполнена сама по себе. VBA разрабатывается в среде хоста (с использованием разработчик вкладка на ленте приложения Office), и она должна выполняться как часть документа Word, рабочей книги Excel, базы данных Access или другого узла Office.

То, как на самом деле используется VBA, тоже отличается. В таких приложениях, как Word, VBA используется главным образом для доступа к объектам среды хоста, например, для доступа к абзацам в документе с помощью Word Word. Документ. Абзацы объект. Каждая хост-среда предоставляет уникальные объекты, которые недоступны в других хост-средах. (Например, в документе Word нет «рабочей книги». Книга является уникальной для Excel. Код Visual Basic в основном предназначен для того, чтобы можно было использовать объекты, настроенные для каждого приложения-хоста Office.

Слияние между VBA и специфичным для хоста кодом можно увидеть в этом примере кода (взято из Microsoft Пример базы данных Northwind), где чисто код VBA отображается красным цветом, а код, специфичный для Access, - синий. Красный код будет таким же в Excel или Word, но синий код уникален для этого приложения Access.

Сам VBA почти такой же, каким он был годами. Способ его интеграции с основным приложением Office и системой справки был улучшен.

Версия Office 2010 по умолчанию не отображает вкладку «Разработчик». На вкладке «Разработчик» вы попадаете в ту часть приложения, где вы можете создавать программы VBA, поэтому первое, что вам нужно сделать, это изменить эту опцию. Просто перейдите на вкладку «Файл», «Параметры», «Настройка ленты» и нажмите «Разработчик» на главных вкладках.

Справочная система работает гораздо более плавно, чем в предыдущих версиях. Вы можете получить помощь по своим вопросам VBA в автономном режиме, в системе, установленной вместе с приложением Office, или в Интернете от Microsoft через Интернет. Два интерфейса спроектированы так, чтобы они были похожи друг на друга:


Нажмите здесь, чтобы отобразить иллюстрацию

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


Нажмите здесь, чтобы отобразить иллюстрацию

На следующей странице мы начнем с того, как на самом деле создать программу VBA.

Когда VBA «размещается» в приложении, таком как Word или Excel, программа «живет» в файле документа, который используется хостом. Например, в Word вы можете сохранить свой «макрос Word» (это не «макрос», но мы сейчас не будем спорить о терминологии) ни в документе Word, ни в шаблоне Word.

Теперь предположим, что эта программа VBA создана в Word (эта простая программа просто меняет шрифт на выделенную строку жирным шрифтом) и сохраняется в документе Word:

Sub AboutMacro () ' «Макро Макро. Макрос записан 9/9/9999 Дэном Маббуттом. ' Выбор. Блок HomeKey: = wdStory. Выбор. Единица EndKey: = wdLine, Extend: = wdExtend. Выбор. Шрифт. Жирный = wdToggle. Выбор. Единица EndKey: = wdStory. End Sub.

В более ранних версиях Office вы могли четко видеть код VBA, хранящийся как часть документа файл в сохраненном документе Word, просмотрев его в блокноте, где все в документе Word может видел. Эта иллюстрация была сделана с предыдущей версией Word, потому что Microsoft изменила формат документа в текущей версии, и программный код VBA больше не отображается как простой текст. Но принцип тот же. Аналогично, если вы создадите электронную таблицу Excel с «макросом Excel», она будет сохранена как часть файла .xlsm.


Нажмите здесь, чтобы отобразить иллюстрацию

VBA и безопасность

Одним из наиболее эффективных приемов компьютерного вируса в прошлом была вставка вредоносного кода VBA в документ Office. В предыдущих версиях Office, когда документ был открыт, вирус мог запускаться автоматически и создавать хаос на вашем компьютере. Эта открытая дыра в безопасности в Office начала влиять на продажи Office, и это действительно привлекло внимание Microsoft. С нынешним поколением Office 2010 Microsoft тщательно закрыла дыру. В дополнение к упомянутым здесь улучшениям, Microsoft улучшила безопасность Office таким образом, что вы могли даже не заметить вплоть до аппаратного уровня. Если вы не решаетесь использовать VBA, потому что слышали, что это небезопасно, будьте уверены, что Microsoft приложила дополнительные усилия, чтобы изменить это сейчас.

Наиболее важным изменением было создание специального типа документа только для документов Office, включающих программы VBA. Например, в Word MyWordDoc.docx не может содержать программу VBA, поскольку Word не разрешает программы в файле, сохраненном с расширением «docx». Файл должен быть сохранен как «MyWordDoc.docm», чтобы программирование VBA было разрешено как часть файла. В Excel расширение файла - ".xlsm".

Чтобы воспользоваться этим расширенным типом документов, Microsoft создала новую подсистему безопасности в Office, которая называется Центр управления безопасностью. По сути, вы можете настроить, как ваше приложение Office обрабатывает документы, содержащие код VBA, в мельчайших деталях. Вы открываете Центр управления безопасностью на вкладке «Разработчик» в приложении Office, нажимая «Безопасность макросов» в разделе «Код» на ленте.


Нажмите здесь, чтобы отобразить иллюстрацию

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

Поскольку VBA привязан к хост-приложению Office, вы должны запустить его там. Эта тема рассматривается начиная со следующей страницы.

Как запустить приложение VBA

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

-> Если вы решили не использовать элемент управления, например кнопку, для запуска программы, то вы должны использовать команду «Макросы» на ленте (вкладка «Разработчик», группа «Код»). Выберите программу VBA и нажмите «Выполнить». Но некоторым из ваших пользователей это может показаться слишком сложным. Например, вы можете не захотеть, чтобы вкладка «Разработчик» была им доступна. В этом случае ...

-> Вам нужно добавить что-то, что пользователь может щелкнуть или ввести, чтобы запустить приложение. В этой статье мы рассмотрим элемент управления Button. Но это может быть нажатие на ярлык, значок на панели инструментов или даже сам процесс ввода данных. Они называются События и что мы напишем в этой и последующих статьях код события - программный код, который автоматически запускается, когда происходит какое-то конкретное событие, например, нажатие кнопки управления.

Пользовательские формы, элементы управления формами и элементы управления ActiveX

Если вы не просто выбираете макрос, наиболее распространенный способ запустить программу VBA - это нажать кнопку. Эта кнопка может быть контроль формы или ActiveX control. В некоторой степени ваш выбор зависит от приложения Office, которое вы используете. Например, Excel предоставляет несколько иной выбор, чем Word. Но эти основные типы управления одинаковы.

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

Для начала создайте новую книгу Excel и выберите вкладку Разработчик. (Если у вас есть другое приложение Office, вариант этих инструкций должен работать.)

Нажмите значок «Вставить». Сначала мы будем работать с кнопкой «Управление формой».

Элементы управления формой являются более старой технологией. В Excel они были впервые представлены в версии 5.0 в 1993 году. Далее мы будем работать с пользовательскими формами VBA, но с ними нельзя использовать элементы управления формой. Они также не совместимы с сетью. Элементы управления формой размещаются непосредственно на поверхности листа. С другой стороны, некоторые элементы управления ActiveX, которые мы рассмотрим далее, нельзя использовать непосредственно на рабочих листах.

Элементы управления формы используются с техникой «щелкни и нарисуй». Нажмите кнопку формы элемента управления. Указатель мыши изменится на знак плюс. Нарисуйте элемент управления, перетаскивая его по поверхности. Когда вы отпустите кнопку мыши, появится диалоговое окно с запросом макрокоманды для соединения с кнопкой.


Нажмите здесь, чтобы отобразить иллюстрацию

Особенно, когда вы создаете элемент управления в первый раз, у вас не будет макроса VBA, ожидающего соединения с нажмите кнопку «Создать», и откроется редактор VBA с предложенным именем, уже введенным в оболочку события. подпрограмма.


Нажмите здесь, чтобы отобразить иллюстрацию

Чтобы завершить это очень простое приложение, просто введите этот оператор кода VBA внутри Sub:


Ячейки (2, 2) .Value = "Нажатие кнопки формы"

Кнопка ActiveX почти такая же. Одно из отличий состоит в том, что VBA размещает этот код на листе, а не в отдельном модуле. Вот полный код события.

Частный Sub CommandButton1_Click () Ячейки (4, 2) .Value = "Кнопка ActiveX нажата" End Sub.

Помимо размещения этих элементов управления непосредственно на листе, вы также можете добавить UserForm к проекту и поместите элементы управления вместо этого. Пользовательские формы - примерно то же самое, что и формы Windows - имеют много преимуществ в возможности управлять своими элементами управления, как в обычном приложении Visual Basic. Добавьте пользовательскую форму в проект в редакторе Visual Basic. Используйте меню «Вид» или щелкните правой кнопкой мыши в Project Explorer.


Нажмите здесь, чтобы отобразить иллюстрацию

По умолчанию для пользовательской формы используется не отобразить форму. Таким образом, чтобы сделать его видимым (и сделать элементы управления на нем доступными для пользователя), выполните метод Show формы. Я добавил еще одну кнопку формы только для этого.

Sub Button2_Click () UserForm1.Show. End Sub.

Вы заметите, что пользовательская форма модальный по умолчанию. Это означает, что когда форма активна, все остальное в приложении неактивно. (Нажатие на другие кнопки ничего не делает, например.) Вы можете изменить это, изменив свойство ShowModal пользовательской формы на False. Но это углубляет нас в программирование. Следующие статьи в этой серии расскажут больше об этом.

Код для пользовательской формы помещается в объект пользовательской формы. Если вы выберете Просмотр кода для всех объектов в Project Explorer, вы увидите, что есть три отдельные подпрограммы события Click, которые содержатся в трех разных объектах. Но все они доступны для одной и той же книги.


Нажмите здесь, чтобы отобразить иллюстрацию

В дополнение к форсированию события нажатием кнопки, VBA также используется для реагирования на события в объектах в хост-приложении. Например, вы можете определить, когда электронная таблица изменяется в Excel. Или вы можете определить, когда строка добавлена ​​в базу данных в Access, и написать программу для обработки этого события.

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

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

И вы можете использовать гораздо больше, чем приложения Office! Если вы щелкнете по значку «Дополнительные элементы управления», вы увидите значительный список вещей, которые установлены на вашем компьютере. Не все из них работают "из коробки", и у вас должна быть доступная документация для каждого из них, но она дает вам представление о том, насколько широка поддержка VBA.

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

Я сохранил лучшее для последнего! Вот методика, которая применяется ко всем приложениям Office. Вы будете часто его использовать, поэтому мы расскажем об этом здесь, во введении.

Когда вы начнете кодировать более сложные программы VBA, одна из первых проблем, с которыми вы столкнетесь, - это узнать о методах и свойствах объектов Office. Если вы пишете программу на VB.NET, вы часто будете искать примеры кода и примеры для решения этой проблемы. Но когда вы рассматриваете все различные хостинговые приложения и тот факт, что у каждого из них есть сотни новых объектов, вы обычно не можете найти то, что точно соответствует тому, что вам нужно сделать.

Ответ - «Запись макроса ...»

Основная идея состоит в том, чтобы включить «Запись макроса», пройти этапы процесса, аналогичные тому, что вы хотите, чтобы ваша программа выполнила, а затем проверить получившуюся программу VBA на наличие кода и идей.

Многие люди ошибаются, думая, что вы должны быть в состоянии записать именно ту программу, которая вам нужна. Но совсем не обязательно быть таким точным. Обычно достаточно хорошо записать программу VBA, которая просто «близка» к тому, что вы хотите, а затем добавить модификации кода, чтобы она точно выполняла свою работу. Это так просто и полезно, что я иногда записываю дюжину программ с небольшими отличиями, просто чтобы посмотреть, каковы различия в коде в результате. Не забудьте удалить все эксперименты, когда вы закончите смотреть на них!

В качестве примера я щелкнул «Запись макроса» в редакторе Word Visual Basic и набрал несколько строк текста. Вот результат. (Продолжения строки были добавлены, чтобы сделать их короче.)

Sub Macro1 () ' Макро1 Макро. ' ' Выбор. TypeText Text: = _. «Это времена, которые» Выбор. TypeText Text: = _. "Попробуй мужские души. " Выбор. TypeText Text: = _. "летний солдат" Выбор. TypeText Text: = _. "и солнечный патриот" Выбор. TypeText Text: = _. "будет, в эти времена, уклоняться от" Выбор. TypeText Text: = _. «Служба своей страны». Выбор. MoveUp Unit: = wdLine, Count: = 1. Выбор. Блок HomeKey: = wdLine. Выбор. MoveRight Unit: = wdCharacter, _. Количество: = 5, расширение: = wdExtend. Выбор. Шрифт. Жирный = wdToggle. End Sub.

Никто не изучает VBA только для себя. Вы всегда используете его вместе с конкретным приложением Office. Итак, чтобы продолжить изучение, здесь есть статьи, которые демонстрируют использование VBA как в Word, так и в Excel:

-> Начало работы с VBA: Word Working Partner

-> Начало работы с VBA: рабочий партнер Excel

instagram story viewer