VB и VBA не одно и то же. VB представляет собой язык для разработки программного обеспечения, которое используется отдельно от MS Office. VBA входит в состав пакета MS Office. Устанавливая его, вы получаете доступ к VBA. Он необходим для управления данными MS Office.
Язык VBA поддерживает все базовые элементы любого другого языка программ.: 1)переменные 2)массивы 3)подпрограммы 4)управляющие структуры 5)возможность создания пользоват. типов данных и т.д.
VBA явл. языком визуального и событийно управляемого программирования. В нем есть возможность создания форм с управляющими элементами, написания процедур, обрабатывающих события. VBA позволяет работать с огромным набором объектов. VBA поддерживается такими приложениями, как Access, PowerPoint, Word и др. В каждом из приложений свой набор объектов.
В Access:формы, запросы, отчеты, таблицы; в Word:абзац, сноска; в PowerPoint слайд. Каждая программа поддерживает свою версию VBA.
VBA отличается от других языков программирования тем, что предоставляет возможность непосредственно работать со всеми объектами MS Office. Он имеет графическую инструментальную среду, позволяющую создать экранные формы и управляющие элементы.
Используем ChatGPT при работе в Excel
Объектная модель Excel является основой структуры программы. Без создания иерархической структуры объектов программы, нельзя использовать VBA в Еexcel.
Все элементы Excel – объекты, с которыми приходится работать в программе. Чаще всего используются такие объекты, как рабочие книги WorkBooks, рабочие листы WorkSheets, диапазоны Range. Объект WorkSheets имеет свойство Name, только объект Range не имеет ярко выраженной коллекции. Выступает как коллекция и как объект. Чаще исп.
В программном коде, обладает огромными возможностями.
2. Объектная модель Excel: понятие объекта, метода, свойства, события.
Объектная модель Excel является основой структуры программы. Без создания иерархической структуры объектов программы, нельзя использовать VBA в Еexcel.
Все элементы Excel – объекты, с которыми приходится работать в программе. Чаще всего используются такие объекты, как рабочие книги WorkBooks, рабочие листы WorkSheets, диапазоны ячеек Range ckarts.
Свойства определяют внешний вид и состояние объекта. Для определения свойства его нужно указать справа от имени объекта через точку. Range(“A1”).Value – свойство описывает содержимое ячейки А1. Существует 2 вида опереций при работе со свойствами: 1)присваивание свойству значения. Объект.Свойство=
Range(“A1”).Value= «Отчет о командировке». 2)полученное свойство присваивается переменной. Переменная=Объект.Свойство
Методы объекта открывают задачи, которые может выполнять объект. Объект.Метод – когда у метода нет параметров. Range(“A1”).CleanContenst – очищает диапазон, но сохраняет форматирование. Если метод имеет аргументы, то они перечисляются через , после названия метода.
Событие представляет собой действие, распознаваемое объектом, для которого можно запрограммировать отклик. Суть программирования в VBA заключается в 2 понятиях: событие и отклик на него.
Программирование макросов на VBA в Excel
Свойства и методы могут быть связаны между собой: выполнение метода приводит к изменению свойства объекта, а изменение некоторого свойства может вызвать наступление события.
3. редактор VB. Окно проекта. Окно редактирования кода. Окно редактирования формы. Панель элементов. Окно свойств. Окно просмотра объектов. Окна Immediate, Watch. Редактор VB=Visual Basic Editor.
Редактора VBA не бывает! Для запуска этого редактора нужно открыть приложение Excel и выполнить команду Сервис/Макрос/Редактор VB или Alt+F11. Чтобы вернуться в Excel, нужно повторно нажать Alt+F11. В открывшемся окне VBA: строка заголовка, меню, панели инструментов и несколько окон.
По умолчанию в верхнем левом углу находится окно проекта. Вывести его можно командой View/Project Explorer. Это окно содержит список всех открытых проектов и список всех их компонентов. В проекте всегда располагаются 3 модуля(на каждом листе) и модуль книги. Все модули делятся на: 1) стандартные – добавляются к проекту Insert/Module.
Они содержат макросы, функции и процедуры. 2) модули объектов – модули, связанные с рабочими книгами, раблчими листами и формами. Проект VBA состоит из объектов, имеющих иерархическую структуру, и включает: объекты Excel, формы, стандартные модули и модули классов. Окно редактирования кода. В окне проекта выделяете объект, для которого будет введен программный код.
Затем выполнить команду View/Code. Откроется окно, в которое нужно ввести программный код. Окно редактирования формы. Для вывода формы: Insert/User Form. На экране появится форма. Окно свойств. Для открытия: View/Properties Window. В левой части окна перечислены свойства объекта, в правой – значения свойств, которые можно изменять. Окно просмотра объектов. View/Object Browser или F2.
В верхнем левом углу открывшегося окна – список библиотек объектной модели Excel. Оно дает спраку о всех объектах Excel, их свойствах и методах.
Панель элементов (View/Dwbug) в стандартном варианте включает различные классы управляющих элементов: CommandButton (командная кнопка), TextBox, Label и др. Существует возможность дополнить панель с помощью команды Tools/Additional Controls.
Окно Immediate – один из инструментов отладки. Предназначено для непосредственного ввода команд. Окно Watch – порядок выполнения программы и отслеживание ошибок.
4. Создание простой программы на примере приложения «Информация о продажах по регионам». Задача: создать программу, которая будет отслеживать продажи в каждом регионе. Для каждого региона отразить сообщение с количеством месяцев, когда продажи превышали заданный объем, введенный пользователем. Порядок выполнения: открыть Excel и на первом листе создать список следующего вида:
Отформатировать столбцы(1 – дата, остальные – формат денежный). Заполнить список. Затем выделить диапазон ячеек B2:G25 и присвоить ему имя SalesRange. Перейти в редактор вба: Alt+F11 или Сервис/Макрос/Редактор Вб. Если окна нет, выполнить команду View/Project Explorer.
Далее выполнить Insort/Module, откроется окно редактора. Ввести следующий программный код:
Dim i As Integer, j As Integer, ks As Integer, s As Currency
s = InputBox(«Введите цену для сравнения», «окно для ввода критерия»)
If Range(«SalesRange»).Cells(j, i) >= s Then
MsgBox «в регионе » » объем продаж превышал » » в » » месяцах»
Запустить программу на выполнение: F5 или Run/Run Sub. На экране появится окно InputBox. Запуск программы с помощью кнопки, расположенной на рабочем листе. Находясь на рабочем листе, выполнить команду Вид/Панели инструментов/Формы. В появившемся окне выбрать элемент Кнопка и нарисовать на рабочий лист.
Откроется окно, в котором предлагается создать макрос, выбрать название CountHighSales и закрыть. Дать свое название кнопке. Для запуска программы щелкнуть на этой кнопке.
Создать программу можно и другим способом, начиная с размещения кнопки. Появляется окно «Назначить макрос объекту». Нажать на кнопку Создать. Запустится редактор VBE и откроется окно редактирования кода макроса. Ввести программный код.
5. Стандартные элементы управления VB: понятия, свойства, методы, события общие для этих элементов. Краткая характеристика элементов управления. Элементы управления — это объекты, которые можно разместить на форме. Как и все объекты, они имеют свойства, методы и события.
Свойства определяют внешний вид и поведение. Изменять свойства можно как во время проектирования (через окно свойств), так и в программном коде. Общие свойства: name – имя, которое используется для ссылок на элементы управления в программном коде. Left, Top – левый верхний угол элемента. Width, height – ширина, высота элемента. Visible – будет ли виден на экране.
Методы: Move – перемещение элемента на форме. Drag – перетаскивание. События: Set Focus, click, dblclick. Элемент управления Командная кнопка (CommandButton). Свойства: Caption — текст на кнопке Picture- определяет рисунок на кнопке. Picture Position — определяет позицию рисунка на кнопке. Событие: Click — возникает при нажатии пользователем кнопки Мышью, DblClick- двойной щелчок, когда возникает нажатие.
Элемент управления счетчик SpinButton — позволяет уменьшать или увеличивать числовое значение в результате щелчка стрелки. Элемент управления полоса прокрутки ScrollBar. Позволяет выбрать значение из заданного диапазона с помощью мыли. Щелчком мыши на концах полосы прокрутки или на самой полосе путем перетаскивания бегунка.
Важнейшие свойства SpinButton и ScrollBar: max- максимальное значение, выдаваемое полосой прокрутки или счетчиком (всегда положителен) min- минимальное значение выдаваемое этими элементами. CmalChange- отрицательное или положительное целое число равное шагу изменения значения этих элементов в тот момент, когдыапроизводится щелчок. событие Change происходит при смене значений этих элементов.
С помощью свойства Value в некоторой переменной можно запомнить текущее значение этого счетчика. Элемент управления рамка (Frame) Она является контейнером и служит для объединения других элементов в группу.
После чего помещенными в нее объектами можно управлять как единым целым (либо переключатели, либо флажки обычно в нее помещаются) Свойства: Caption- задает текст, который выводится в левом верхнем углу рамки; Appearance- 2 значения: 0- Flat (простая рамка), 1- 3D объемная. Элемент управления текстовое поле.
Он обеспечивает возможность ввода текста пользователем во время работы приложения или отображение информации, задаваемой свойством Text. Свойства: text- текстовое поле, характеризуется еще свойствами, позволяющими использовать этот элемент при создании полей, предназначенных для ввода пароля. PasswordChar задает символ отображаемый в поле вместо возможных символов.
Maxlength- максимальное количество символов, вводимых в поле. Элемент управления Метка (надпись) он используется в форме для размещения статичного текста. Свойства: Caption- текст который размещается на этом элементе, размер не более 1024 байт. Font- внешний вид шрифта.
6. Типы подпрограмм и их определения: определение и виды процедур. Примеры процедур разных видов. Логические фрагменты кода, которые выполняют определенную задачу, называются подпрограммами. В вба подпрограммами называют макросы, процедуры и даже функции.
Можно создать основную процедуру и вызвать из нее остальные процедуры. В этом случае набор совместно работающих процедур наз. приложением. Существуют следующие виды процедур: 1)обработки событий 2) макросов 3) пользователей. Процедура обработки события всегда связана с каким-либо объектом.
Private Sub ИмяОбъекта_Событие()
Пример: Private Sub CommandButton_Click()
Процедура обработки макроса имеет следующий синтаксис:
Для вызова макроса из главной процедуры используется оператор Call ИмяМакроса. При условии, что все процедуры, в том числе и главная, расположены в одном модуле.
Источник: studfile.net
Объекты Microsoft Excel, которые позволяют работать с информацией
В большинстве примеров вводной части раздела «Офисные решения» мы рассматривали возможности VBA без связи с информацией, находящейся на рабочем листе. Лишь несколько ситуаций продемонстрировали синтаксические конструкции, которые позволяли извлекать и записывать данные в ячейки листов Microsoft Excel. В этой части раздела мы детально рассмотрим объекты, которые позволяют работать с информацией, содержащейся в рабочих книгах Microsoft Excel. Приводимые здесь примеры, являются фундаментом для более сложных разработок, рассматриваемых в последующих статьях.
Файл рабочей книги Excel представлен в объекте Workbook, который имеет большое количество свойств и методов. Справочная информация по ним присутствует как в электронной справке по VBA, так и в большом количестве изданий по данной теме. Мы не будем углубляться в чисто справочную информацию и во вводной части рассмотрим только те сведения, с которыми далее встретимся в приведенных примерах.
Так, свойство Worksheets объекта Workbook представляет семейство всех рабочих листов книги. И для обращения к конкретному листу книги с помощью этого свойства следует просто указать в качестве параметра номер листа, что выглядит так: Worksheets(номер листа). В качестве номера листа выступает просто его порядковый номер в книге Microsoft Excel.
Другой вариант заключается в указании в качестве параметра названия листа: Worksheets («Название листа»). Одним из наиболее часто программируемых событий, связанных с книгой в целом, является событие Open, которое происходит при открытии рабочей книги. Так, если мы хотим, чтобы при открытии книги выполнялись определенные действия, следует расположить необходимый программный фрагмент внутри процедуры Workbook_Open. Программирование этого события будет рассматриваться в части приводимых далее примеров.
Следующим объектом в порядке иерархии после Workbook является объект Worksheet, представляющий рабочий лист. Из многообразия методов этого объекта широко используется Activate, который существует и для семейства листов Worksheets, о котором мы уже сказали выше. Например, если при работе на первом листе книги Microsoft Excel требуется активизировать второй лист, то синтаксис программной строки в процедуре (выполняться она может, например, по щелчку на кнопке) должен выглядеть следующим образом: Worksheets(2).Activate. Если же требуется активизировать лист, называемый Информация о фирмах, то следует написать в процедуре такую конструкцию: Worksheets(«Информация о фирмах»).Activate.
Пользователи Microsoft Excel знают, что это приложение предлагает сервис, связанный с защитой рабочих книг и составляющих их листов. Так, метод Protect (семейства Worksheets) обеспечивает защиту рабочего листа от внесения в него изменений. Для программной установки защиты с паролем (пароль указывается в параметре Password этого метода) листа с названием Сотрудники можно поступить следующим образом:
Worksheets(«Сотрудники»).Protect Password:=»zv2345″, _ DrawingObjects:=True, Contents:=True, Scenarios:=True
Worksheets(«Сотрудники»).Protect Password:=»zv2345″, _ DrawingObjects:=True, Contents:=True, Scenarios:=True
Здесь и далее символ «нижнего подчеркивания» является информацией для Microsoft Visual Basic о том, что следующая строка является продолжением текущей.
Существует и соответствующий метод Unprotect, позволяющий снять защиту с листа. Для только что установленной защиты метод ее снятия: Worksheets(«Сотрудники»).Unprotect Password:=»zv2345″ . Любая практическая работа в Microsoft Excel, так или иначе, касается информации в ячейках. Для работы с ячейками в VBA существует объект Range (в переводе — диапазон ячеек).
Использование этого объекта требует задания параметра диапазона ячеек, которые нас интересуют. Это может быть одна ячейка или группа ячеек. Так, если мы напишем Worksheets(1).Range («С5»).Value = 7 , то это означает, что в ячейку С5 первого листа мы программно записываем число 7. Здесь используется основное свойство объекта Range — Value. Буквально оно означает значение или содержимое ячейки (группы ячеек). В следующей конструкции в совокупность ячеек программно вводится одинаковый набор букв АБСДЕ: Worksheets(1).Range(«A1:А3»).Value = «АБСДЕ» .
Другой способ работы с ячейками реализуется с помощью объекта Cells, и синтаксис его использования выглядит следующим образом: Cells (номер строки, номер столбца). Фактически с точки зрения их использования рассматриваемые объекты похожи. Например, получить в переменной Z значение ячейки D5 можно двумя разными способами: Z = Range(«D5»).Value или Z = Cells(5,4).Value . В качестве примера программной конструкции на данную тему можно привести следующее присвоение:
Worksheets(2).Range(«C5»).Value = _ Worksheets(3).Cells(5, 1).Value.
Worksheets(2).Range(«C5»).Value = _ Worksheets(3).Cells(5, 1).Value.
Источник: excelexpert.ru
Обзор объектной модели Excel
Область применения:Visual Studio
Visual Studio для Mac
Visual Studio Code
Для разработки решений, использующих Microsoft Office Excel, необходимо взаимодействие с объектами, предоставляемыми объектной моделью Excel. В этом разделе представлены наиболее важные объекты:
- Application
- Workbook
- Worksheet
- RangeПрименимо к: Сведения в этом разделе относятся к проектам уровня документа и проектам надстроек VSTO для Excel. Дополнительные сведения см. в разделе «Функции», доступные по Office приложению и типу проекта.
Заинтересованы в разработке решений, расширяющих возможности Office на нескольких платформах? Ознакомьтесь с новой моделью надстроек Office. Office надстройки имеют небольшое пространство по сравнению с надстройками и решениями VSTO, и вы можете создавать их с помощью практически любой технологии веб-программирования, таких как HTML5, JavaScript, CSS3 и XML.
Объектная модель точно соответствует пользовательскому интерфейсу. Объект Application представляет приложение в целом, а каждый из объектов Workbook содержит коллекцию объектов Worksheet . Отсюда следует, что основная абстракция, представляющая ячейки, является объектом Range, позволяющим работать с отдельными ячейками или группой ячеек.
Помимо объектной модели Excel, Office проекты в Visual Studio предоставляют элементы узла и элементы управления ведущего приложения, расширяющие некоторые объекты в объектной модели Excel. Поведение ведущих элементов и элементов управления ведущего приложения аналогично поведению объектов Excel, однако они обладают дополнительными функциональными возможностями, такими как возможность привязки данных и дополнительные события. Дополнительные сведения см. в разделе «Автоматизация Excel с помощью расширенных объектов» и элементов управления узлами и элементов управления узлами.
В этом разделе приводится краткий обзор объектной модели Excel. Дополнительные сведения о всей объектной модели Excel см. в документации по Excel объектной модели.
Доступ к объектам в проекте Excel
При создании проекта надстройки VSTO для Excel Visual Studio автоматически создает файл кода ThisAddIn.vb или ThisAddIn.cs. Доступ к объекту приложения можно получить с помощью свойства Me.Application или this.Application .
При создании нового проекта уровня документа для Excel можно создать новый проект книги Excel или шаблона Excel. Visual Studio автоматически создает в новом проекте Excel (как для проектов книги, так и для проектов шаблона) следующие файлы кода:
ThisWorkbook.vb | ThisWorkbook.cs |
Sheet1.vb | Sheet1.cs |
Sheet2.vb | Sheet2.cs |
Sheet3.vb | Sheet3.cs |
Класс Globals в проекте можно использовать для получения доступа к объекту ThisWorkbook , Sheet1 , Sheet2 или Sheet3 вне соответствующего класса. Дополнительные сведения см. в статье «Глобальный доступ к объектам» в проектах Office. В следующем примере вызывается PrintPreview метод Sheet1 независимо от того, помещается ли код в один из Sheet n классов или ThisWorkbook класса.
Globals.Sheet1.PrintPreview();
Globals.Sheet1.PrintPreview()
Поскольку данные в документе Excel хорошо структурированы, объектная модель имеет прямую иерархическую структуру. Excel предоставляет сотни объектов, с которыми может потребоваться взаимодействовать, но вы можете получить хорошее начало объектной модели, сосредоточив внимание на небольшом подмножестве доступных объектов. К числу этих объектов относятся следующие четыре:
- Приложение
- Книга
- Лист
- Диапазон С этими четырьмя объектами и их составляющими связана большая часть работы в Excel.
Объект приложения
Объект Excel Application представляет само приложение Excel. Объект Application представляет множество сведений о выполняемом приложении, параметрах соответствующего экземпляра и текущих объектах пользователя, открытых в экземпляре.
Не устанавливайте для свойства EnableEvents объекта Application в Excel значение false. Установка значения false для этого свойства предотвращает инициирование событий в Excel, включая события элементов управления ведущего приложения.
Объект Workbook
Объект Workbook представляет отдельную книгу в приложении Excel.
Средства разработки Office в Visual Studio расширяют объект Workbook , предоставляя тип Workbook . Данный тип обеспечивает доступ ко всем функциям объекта Workbook. Дополнительные сведения см. в разделе «Узел книги».
Worksheet — объект
Объект Worksheet является членом коллекции Worksheets. Многие свойства, методы и события объекта Worksheet идентичны или похожи на элементы, предоставляемые объектами Application или Workbook.
Excel предоставляет коллекцию Sheets как свойство объекта Workbook. Каждый член коллекции Sheets является объектом Worksheet или Chart.
Средства разработки Office в Visual Studio расширяют объект Worksheet , предоставляя тип Worksheet . Этот тип предоставляет доступ ко всем возможностям объекта Worksheet, а также к новым возможностям, таким как возможность размещения управляемых элементов управления и обработки новых событий. Дополнительные сведения см. в разделе «Узел листа».
Range — объект
Объект Range является объектом, который используется в приложениях Excel чаще всего. Для работы с какой-либо областью Excel ее необходимо указать в качестве объекта Range, а затем использовать методы и свойства этого диапазона. Объект Range может представлять ячейку, строку или столбец, выборку ячеек, содержащую один или несколько смежных или несмежных блоков ячеек, или даже группу ячеек, распределенную между разными листами.
Visual Studio расширяет объект Range, предоставляя типы NamedRange и XmlMappedRange. Эти типы обладают большинством функций объекта Range, а также новыми функциями, такими как возможность привязки данных и новые события. Дополнительные сведения см. в разделе «Элемент управления NamedRange » и элемент управления XmlMappedRange.
Использование документации по объектной модели Excel
Полные сведения об объектной модели Excel см. в справочнике по основной сборке взаимодействия (PIA) Excel и в справочнике по объектной модели VBA.
Ссылка на основную сборку взаимодействия
В справочной документации по основной сборке взаимодействия Excel описываются типы основной сборки взаимодействия для Excel. Эта документация доступна в следующем расположении: Excel 2010 основной справочник по сборке взаимодействия.
Дополнительные сведения о проектировании Excel PIA, таких как различия между классами и интерфейсами в PIA и способах реализации событий в PIA, см. в обзоре классов и интерфейсов в Office основных сборок взаимодействия.
Справочник по объектной модели VBA
В справочных документах по объектной модели VBA объектная модель Excel описана в том виде, в котором она предоставляется коду Visual Basic для приложений. Дополнительные сведения см. в Excel справочнике по объектной модели 2010.
Все объекты и элементы в справочнике объектной модели VBA соответствуют типам и участникам основной сборки взаимодействия Excel. Например, объект Worksheet в ссылке на объектную модель VBA соответствует Worksheet объекту в Excel PIA. Несмотря на то что в справочнике по объектной модели VBA содержатся примеры кода для большинства свойств, методов и событий, необходимо преобразовать код VBA в этом справочнике в код Visual Basic или Visual C#, если требуется использовать их в проекте Excel, создаваемом с помощью Visual Studio.
См. также
Источник: learn.microsoft.com