Объекты vba excel их свойства и методы
Термин Объекты Excel (понимаемый в широком смысле, как объектная модель Excel) включает в себя элементы, из которых состоит любая рабочая книга Excel. Это, например, рабочие листы (Worksheets), строки (Rows), столбцы (Columns), диапазоны ячеек (Ranges) и сама рабочая книга Excel (Workbook) в том числе. Каждый объект Excel имеет набор свойств, которые являются его неотъемлемой частью.
Например, объект Worksheet (рабочий лист) имеет свойства Name (имя), Protection (защита), Visible (видимость), Scroll Area (область прокрутки) и так далее. Таким образом, если в процессе выполнения макроса требуется скрыть рабочий лист, то достаточно изменить свойство Visible этого листа.
В Excel VBA существует особый тип объектов – коллекция. Как можно догадаться из названия, коллекция ссылается на группу (или коллекцию) объектов Excel. Например, коллекция Rows – это объект, содержащий все строки рабочего листа.
Доступ ко всем основным объектам Excel может быть осуществлён (прямо или косвенно) через объект Workbooks, который является коллекцией всех открытых в данный момент рабочих книг. Каждая рабочая книга содержит объект Sheets – коллекция, которая включает в себя все рабочие листы и листы с диаграммами рабочей книги. Каждый объект Worksheet состоит из коллекции Rows – в неё входят все строки рабочего листа, и коллекции Columns – все столбцы рабочего листа, и так далее.
В следующей таблице перечислены некоторые наиболее часто используемые объекты Excel. Полный перечень объектов Excel VBA можно найти на сайте Microsoft Office Developer (на английском).
Доступ к диапазону, состоящему из единственной ячейки, может быть осуществлён через объект Worksheet при помощи свойства Cells, например, Worksheet.Cells(1,1).
По-другому ссылку на диапазон можно записать, указав адреса начальной и конечной ячеек. Их можно записать через двоеточие или через запятую. Например, Worksheet.Range(«A1:B10») или Worksheet.Range(«A1», «B10») или Worksheet.Range(Cells(1,1), Cells(10,2)).
Приведённая выше таблица показывает, как выполняется доступ к объектам Excel через родительские объекты. Например, ссылку на диапазон ячеек можно записать вот так:
Присваивание объекта переменной
В Excel VBA объект может быть присвоен переменной при помощи ключевого слова Set:
Активный объект
В любой момент времени в Excel есть активный объект Workbook – это рабочая книга, открытая в этот момент. Точно так же существует активный объект Worksheet, активный объект Range и так далее.
Сослаться на активный объект Workbook или Sheet в коде VBA можно как на ActiveWorkbook или ActiveSheet, а на активный объект Range – как на Selection.
Если в коде VBA записана ссылка на рабочий лист, без указания к какой именно рабочей книге он относится, то Excel по умолчанию обращается к активной рабочей книге. Точно так же, если сослаться на диапазон, не указывая определённую рабочую книгу или лист, то Excel по умолчанию обратится к активному рабочему листу в активной рабочей книге.
Таким образом, чтобы сослаться на диапазон A1:B10 на активном рабочем листе активной книги, можно записать просто:
Смена активного объекта
Если в процессе выполнения программы требуется сделать активной другую рабочую книгу, другой рабочий лист, диапазон и так далее, то для этого нужно использовать методы Activate или Select вот таким образом:
Методы объектов, в том числе использованные только что методы Activate или Select, далее будут рассмотрены более подробно.
Свойства объектов
Каждый объект VBA имеет заданные для него свойства. Например, объект Workbook имеет свойства Name (имя), RevisionNumber (количество сохранений), Sheets (листы) и множество других. Чтобы получить доступ к свойствам объекта, нужно записать имя объекта, затем точку и далее имя свойства. Например, имя активной рабочей книги может быть доступно вот так: ActiveWorkbook.Name. Таким образом, чтобы присвоить переменной wbName имя активной рабочей книги, можно использовать вот такой код:
Ранее мы показали, как объект Workbook может быть использован для доступа к объекту Worksheet при помощи такой команды:
Это возможно потому, что коллекция Worksheets является свойством объекта Workbook.
Некоторые свойства объекта доступны только для чтения, то есть их значения пользователь изменять не может. В то же время существуют свойства, которым можно присваивать различные значения. Например, чтобы изменить название активного листа на «Мой рабочий лист«, достаточно присвоить это имя свойству Name активного листа, вот так:
Методы объектов
Объекты VBA имеют методы для выполнения определённых действий. Методы объекта – это процедуры, привязанные к объектам определённого типа. Например, объект Workbook имеет методы Activate, Close, Save и ещё множество других.
Для того, чтобы вызвать метод объекта, нужно записать имя объекта, точку и имя метода. Например, чтобы сохранить активную рабочую книгу, можно использовать вот такую строку кода:
Как и другие процедуры, методы могут иметь аргументы, которые передаются методу при его вызове. Например, метод Close объекта Workbook имеет три необязательных аргумента, которые определяют, должна ли быть сохранена рабочая книга перед закрытием и тому подобное.
Чтобы передать методу аргументы, необходимо записать после вызова метода значения этих аргументов через запятую. Например, если нужно сохранить активную рабочую книгу как файл .csv с именем «Книга2», то нужно вызвать метод SaveAs объекта Workbook и передать аргументу Filename значение Книга2, а аргументу FileFormat – значение xlCSV:
Чтобы сделать код более читаемым, при вызове метода можно использовать именованные аргументы. В этом случае сначала записывают имя аргумента, затем оператор присваивания «:=» и после него указывают значение. Таким образом, приведённый выше пример вызова метода SaveAs объекта Workbook можно записать по-другому:
В окне Object Browser редактора Visual Basic показан список всех доступных объектов, их свойств и методов. Чтобы открыть этот список, запустите редактор Visual Basic и нажмите F2.
Рассмотрим несколько примеров
Пример 1
Этот отрывок кода VBA может служить иллюстрацией использования цикла For Each. В данном случае мы обратимся к нему, чтобы продемонстрировать ссылки на объект Worksheets (который по умолчанию берётся из активной рабочей книги) и ссылки на каждый объект Worksheet отдельно. Обратите внимание, что для вывода на экран имени каждого рабочего листа использовано свойство Name объекта Worksheet.
Пример 2
В этом примере кода VBA показано, как можно получать доступ к рабочим листам и диапазонам ячеек из других рабочих книг. Кроме этого, Вы убедитесь, что если не указана ссылка на какой-то определённый объект, то по умолчанию используются активные объекты Excel. Данный пример демонстрирует использование ключевого слова Set для присваивания объекта переменной.
В коде, приведённом ниже, для объекта Range вызывается метод PasteSpecial. Этот метод передаёт аргументу Paste значение xlPasteValues.
Пример 3
Следующий отрывок кода VBA показывает пример объекта (коллекции) Columns и демонстрирует, как доступ к нему осуществляется из объекта Worksheet. Кроме этого, Вы увидите, что, ссылаясь на ячейку или диапазон ячеек на активном рабочем листе, можно не указывать этот лист в ссылке. Вновь встречаем ключевое слово Set, при помощи которого объект Range присваивается переменной Col.
Данный код VBA показывает также пример доступа к свойству Value объекта Range и изменение его значения.
Объект представляет элемент приложения, такой как лист, ячейка, диаграмма, форма или отчет. В коде Visual Basic необходимо идентифицировать объект, прежде чем можно будет применить один из методов объекта или изменить значение одного из его свойств.
Коллекция — это объект, который содержит несколько других объектов обычно, но не всегда, одного типа. Например, в Microsoft Excel объект Workbooks содержит все открытые объекты Workbook. В Visual Basic коллекция Forms содержит все объекты Form в приложении.
Элементы в коллекции могут идентифицироваться по номеру или по имени. Например, в указанной ниже процедуре первый открытый объект Workbook идентифицируется по номеру.
В приведенной ниже процедуре используется имя, указанное в виде строки, для идентификации объекта Form.
Можно также обрабатывать всю коллекцию объектов, если объекты совместно используют общие методы. Например, следующая процедура закрывает все открытые формы.
Возврат объектов
Каждое приложение имеет способ возврата содержащихся в нем объектов. Однако они отличаются, поэтому необходимо ознакомиться со справочным разделом по объектам или коллекциям, используемым в приложении, чтобы узнать, как возвратить объект.
Методы
Метод — это действие, которое может выполняться объектом. Например, Add — это метод объекта ComboBox, так как им добавляется новая запись в поле со списком.
В следующей процедуре метод Add используется для добавления нового элемента в ComboBox.
Свойства
Свойство — это атрибут объекта, которой определяется одно из характеристик объекта, такая как размер, цвет, местоположение экрана или характер поведения объекта, например включен ли он и является ли видимым. Чтобы изменить характеристики объекта, изменяют значения его свойств.
Чтобы установить значение свойства, введите после ссылки на объект точку, имя свойства, знак равенства (=) и новое значение свойства. Например, указанная ниже процедура изменяет заголовок формы Visual Basic путем установки свойства Caption.
Некоторые свойства невозможно установить. В справочном разделе по каждому свойству указывается, можно ли установить это свойство (чтение-запись), только прочитать свойство (только чтение) или только записать свойство (только запись).
События
Событие — это действие, распознаваемое объектом, например щелчок мыши или нажатие клавиши, для которого можно написать код реагирования. События могут возникать в результате действий пользователя или кода программы либо вызываться системой.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Объект представляет собой сочетание кода и данных, которое рассматривается как единое целое. Объект может быть частью приложения, как, например, элемент управления или форма. Также объектом может являться само приложение в целом.
при создании приложения в Visual Basic вы постоянно работаете с объектами. можно использовать объекты, предоставляемые Visual Basic, такие как элементы управления, формы и объекты доступа к данным. кроме того, в приложении Visual Basic можно использовать объекты других приложений. Вы даже можете создать собственные объекты и определить для них дополнительные свойства и методы. Объекты выполняют функцию готовых блоков для создания программ — вы можете один раз написать фрагмент кода и использовать его многократно.
В этой статье мы подробно расскажем вам про объекты.
Объекты и классы
каждый объект в Visual Basic определяется классом. Класс описывает переменные, свойства, процедуры и события объекта. Объекты являются экземплярами классов. Определив класс, вы можете создать из него любое количество объектов.
Взаимосвязь между объектом и его классом можно проиллюстрировать на примере печенья и формочки для печенья. Форма для печенья — это класс. Она определяет характеристики каждого печенья, то есть размер и форму. Класс используется для создания объектов. Отдельные печенья — это и есть объекты.
Необходимо создать объект, чтобы получить доступ к его членам, за исключением Shared элементов, к которым можно получить доступ без объекта класса.
Создание объекта из класса
Определите, из какого класса нужно создать объект, или определите собственный класс. Пример.
Напишите оператор Dim для создания переменной, значением которой будет новый экземпляр класса. Переменная должна иметь тип, соответствующий нужному классу.
Добавьте ключевое слово New Operator, сохранить новый экземпляр класса в переменную.
Теперь члены класса будут доступны через переменную объекта.
Всегда, если это возможно, следует объявлять переменную с типом того класса, который будет в ней храниться. Этот принцип называется раннее связывание. Если во время компиляции тип класса не известен, можно использовать позднее связывание, объявив переменную с типом данных объекта. Но помните, что позднее связывание может снижать производительность и ограничивать доступ к членам объекта во время выполнения. Дополнительные сведения см. в статье Object Variable Declaration (Объявление объектной переменной).
Несколько экземпляров
Обычно все только что созданные из класса объекты идентичны друг другу. Но с того момента, когда они возникают как отдельные объекты, их переменные и свойства изменяются независимо от других экземпляров объекта. Например, если вы добавляете в форму три флажка, каждый из объектов флажков является экземпляром класса CheckBox. Отдельные объекты CheckBox имеют одинаковый набор характеристик и возможностей (свойства, переменные, процедуры и события), которые определены в этом классе. Но каждый из объектов имеет собственное имя, каждый можно отдельно включать и отключать, а также перемещать в другое место на форме.
Члены объекта
Объект является элементом приложения и представляет собой экземпляр некоторого класса. Поля, свойства, методы и события являются составными частями объекта, и совокупно именуются членами объекта.
Доступ к членам
Чтобы обратиться к члену объекта, нужно указать имя соответствующей переменной объекта и имя нужного члена, отделив его точкой ( . ). В следующем примере задается свойство Text объекта Label.
Список членов IntelliSense
Технология IntelliSense перечисляет члены класса, когда вы обращаетесь к функции списка членов, например вводите точку ( . ) в контексте доступа к члену. Если точка ставится после имени переменной, объявленной как экземпляр некоторого класса, IntelliSense перечисляет все члены экземпляра, но опускает общие члены. Если точка ставится после имени класса, то IntelliSense перечисляет все общие члены, но опускает члены экземпляра. Дополнительные сведения см. в разделе Using IntelliSense.
Поля и свойства
Поля и свойства представляют сведения, содержащиеся в объекте. Их значения можно задавать и получать с помощью инструкций присваивания, так же как для локальных переменных в процедуре. В следующем примере мы получаем значение свойства Width и устанавливаем значение свойства ForeColor для объекта Label.
Поле можно также называть переменная-член.
Процедуры свойств удобно использовать в следующих случаях.
Вы хотите контролировать, когда и как значения будут задаваться и извлекаться.
Свойство имеет строго определенный набор значений, которые требуется проверять.
Изменение значения приводит к существенному изменению состояния объекта (как, например, значение свойства IsVisible ).
Изменение значения свойства изменяет другие внутренние переменные или значения других свойств.
Перед установкой или получением свойства необходимо выполнить определенный набор действий.
Если выполняются следующие условия, можно использовать поля.
Значение имеет тип, для которого существует встроенная проверка. Например, если присвоить переменной типа Boolean любое значение, кроме True или False , создается ошибка или выполняется автоматическое преобразование данных.
Допустимым является любое значение из диапазона, поддерживаемого для этого типа данных. Это справедливо для многих свойств с типами Single или Double .
Свойство имеет тип данных String и не имеет ограничений на размер или значение строки.
Дополнительные сведения см. в статье Property Procedures (Visual Basic) (Процедуры свойств в Visual Basic).
Всегда оставляйте неконстантные поля частными. Если вы хотите сделать его общедоступным, используйте вместо него свойство.
Методы
Действие, которое выполняет объект, называется методом. Например, Add — это метод объекта ComboBox, который добавляет новую запись в поле со списком.
В следующем примере иллюстрируется использование метода Start объекта Timer.
По сути метод — это просто процедура, предоставляемая объектом.
Дополнительные сведения см. в разделе Procedures in Visual Basic (Процедуры в Visual Basic).
События
Событие — это действие, распознаваемое объектом, например, щелчок мышью или нажатие клавиши. Вы можете написать код для реагирования на эти события. События могут происходить в результате действий пользователя, выполнения программного кода или изменения состояния системы. Принято говорить, что код, который объявляет о наступлении события, создает это событие, а код, который реагирует на него, обрабатывает событие.
Вы можете разработать собственные события, которые будут создаваться и обрабатываться созданными вами объектами. Дополнительные сведения см. в статье Events (Visual Basic) (События в Visual Basic).
Члены экземпляров и общие члены
Когда вы создаете объект на основе класса, вы получаете экземпляр этого класса. Члены, которые объявлены без ключевого слова Shared, являются членами экземпляра, то есть принадлежат исключительно одному определенному экземпляру. Член экземпляра в одном экземпляре никак не зависит от такого же члена в другом экземпляре того же класса. Например, переменная-член экземпляра может иметь разные значения в разных экземплярах.
Члены, объявленные с ключевым словом Shared , являются Shared , то есть относятся к классу в целом, а не к отдельному экземпляру. Существует только одна копия каждого общего члена, независимо от количества созданных экземпляров. Общий член определен даже в том случае, если не создано ни одного экземпляра. Например, общая переменная-член имеет только одно значение, которое можно получить из любого фрагмента кода, имеющего доступ к соответствующему классу.
Доступ к членам, не являющимся общими
Убедитесь, что объект уже создан на основе нужного класса и сохранен в объектной переменной.
В операторе, который должен обращаться к члену, после имени переменной объекта введите оператор доступа к члену ( ), а затем имя члена.
Доступ к общим членам
После имени класса введите оператор доступа к члену ( ), а затем имя члена. К члену объекта, объявленному с ключевым словом Shared , нужно всегда обращаться напрямую через имя класса.
Если вы уже создали из этого класса объект, вы можете обращаться к члену, объявленному с ключевым словом Shared , и через переменную этого объекта.
Различия между классами и модулями
Основное различие между классами и модулями заключается в том, что для классов можно создавать экземпляры в качестве объектов. Модули таким свойством не обладают. Поскольку все данные стандартного модуля существуют только в одной копии, любые изменения общей переменной стандартного модуля, выполненные в любой части программы, будут влиять на все остальные обращения к значению этой переменной. Данные объекта, наоборот, существуют отдельно для каждого созданного экземпляра объекта. Еще одно важное различие состоит в том, что классы могут реализовывать интерфейсы, а модули — нет. Если класс помечен модификатором MustInherit , он не может быть создан напрямую. Однако он по-прежнему отличается от модуля, так как он может быть унаследован, пока модули не могут быть унаследованы.
Если к члену класса применяется модификатор Shared , он устанавливается для класса в целом, а не для конкретного экземпляра класса. Прямой доступ к члену осуществляется через имя класса, так же как и к членам модуля.
Также классы и модули используют разные области действия для своих членов. Члены, определенные внутри класса, относятся к определенному экземпляру класса и существуют только в то время, когда существует этот объект. Для обращения к членам класса из кода за пределами этого класса следует использовать полные имена в формате Объект.Член.
С другой стороны, все объявленные в модуле члены по умолчанию свободно используются из любого места в коде, откуда есть доступ к этому модулю. Это означает, что переменные стандартного модуля являются фактически глобальными переменными. Они видимы из любой точки проекта и существуют в течение всего времени жизни программы.
Повторное использование классов и объектов
Объекты позволяют один раз объявить переменную или процедуру, а затем использовать ее везде, где потребуется. Например, если в приложении вам нужно средство проверки орфографии, то для него потребуется определить все необходимые переменные и служебные функции. Создав специальный класс для средства проверки орфографии, вы сможете использовать его снова в других приложениях, просто добавив ссылку на скомпилированную сборку. Более того, вы можете сэкономить время и силы, взяв готовый класс проверки орфографии, созданный ранее кем-то другим.
В предыдущем примере первый оператор Dim объявляет переменную объекта типа и присваивает ей объект TimeZone, который возвращается свойством CurrentTimeZone.
Отношения между объектами
Между объектами могут существовать связи нескольких видов. В первую очередь эти связи подразделяются на иерархию и вложенность.
Иерархические связи
Если классы являются производным от других, более фундаментальных классов, такие отношения именуются иерархической связью. Иерархии классов удобны при описании объектов, являющихся подтипами более общих классов.
Для следующего примера предположим, что нам нужен особый вид объекта Button, который действует как обычная кнопка Button, но в дополнение имеет метод, меняющий местами цвет фона и цвет переднего плана.
Определить класс, производный от уже существующего класса
С помощью инструкции Class определите класс, из которого вы будете создавать нужный объект.
Код определения класса должен завершаться строкой End Class . По умолчанию интегрированная среда разработки (IDE) автоматически создает End Class при вводе инструкции Class .
Сразу за инструкцией Class создайте Class . Укажите класс, производным от которого будет этот новый класс.
Новый класс наследует все члены, определенные в базовом классе.
Добавьте код для дополнительных элементов, которые будет предоставлять производный класс. Например, вы можете добавить метод ReverseColors , тогда определение производного класса будет выглядеть примерно так:
При создании объекта из ReversibleButton класса он может получить доступ ко всем членам Button класса, а также ReverseColors к методу и другим новым элементам, определенным в ReversibleButton .
Производные классы наследуют члены класса, на котором они основаны, что позволяет постепенно повышать сложность при продвижении по иерархии классов. Дополнительные сведения см. в статье Inheritance Basics (Visual Basic) (Основная информация о наследовании в Visual Basic).
Компиляция кода
Убедитесь, что компилятор сможет получить доступ к классу, на основе которого вы намерены создать новый класс. Возможно, для этого придется указать его полное имя, как в предыдущем примере, или определить его пространства имен в операторе Imports. Если класс находится в другом проекте, может потребоваться ссылка на этот проект. Дополнительные сведения см. в статье Управление ссылками в проекте.
Отношение вложения
Также объекты могут быть связаны отношением вложения. Объекты-контейнеры на логическом уровне содержат в себе другие объекты. Например, объект OperatingSystem логически содержит объект Version, который он возвращает с помощью свойства Version. Важно понимать, что физически объект-контейнер не содержит в себе других объектов.
Коллекции
В качестве примера объектов-контейнеров можно привести коллекции. Коллекции представляют собой группы однотипных перечисляемых объектов. Visual Basic поддерживает конкретный синтаксис в области For Each. Оператор Next , позволяющий выполнять итерацию по элементам коллекции. Кроме того, коллекции часто позволяют использовать свойство Item[] для обращения к элементам по индексу или по уникальной строке. Коллекции иногда проще в использовании, чем массивы, поскольку они позволяют добавлять или удалять элементы без использования индексов. Благодаря простоте использования коллекции часто применяются для хранения форм и элементов управления.
Связанные темы
Основы наследования
Описание модификаторов наследования, переопределения методов и свойств, MyClass и MyBase.
Анонимные типы
Описание создания и использования анонимных типов, которые позволяют создавать объекты без определения класса для типа данных.
Инициализаторы объектов: именованные и анонимные типы
Описание инициализаторов объектов, которые позволяют создавать экземпляры именованных и анонимных типов с помощью одного выражения.
Объекты являются основными строительными блоками Microsoft Visual Basic; почти все, что вы делаете в Visual Basic, включает изменение объектов. Каждый элемент Microsoft Word, например документы, таблицы, абзацы, закладки и поля, может быть представлен объектом в Visual Basic.
Что такое объекты и коллекции?
Объект представляет элемент Word, например документ, абзац, закладку или один символ. Коллекция — это объект, содержащий несколько других объектов, обычно одного типа; например, все объекты закладки в документе содержатся в одном объекте коллекции. С помощью свойств и методов можно изменить один объект или целую коллекцию объектов.
Что такое свойство?
Свойство — это атрибут объекта или аспект его поведения. Например, свойства документа включают его имя, содержимое и состояние сохранения и включено ли отслеживание изменений. Чтобы изменить характеристики объекта, изменяют значения его свойств.
Чтобы установить значение свойства, выполните ссылку на объект с периодом, именем свойства, равным знаком и новым значением свойства. В следующем примере включается отслеживание изменений в документе с MyDoc.doc.
В этом примере Documents ссылается на коллекцию открытых документов, а имя "Sales.doc" определяет один документ в коллекции. Свойство TrackRevisions установлено для этого единого документа.
Некоторые свойства невозможно установить. В разделе Справка для свойства указывает, можно ли это свойство задать (читать/писать) или только читать (только для чтения).
Вы можете возвращать сведения об объекте, возвращая значение одного из его свойств. В следующем примере возвращается имя активного документа.
В этом примере ActiveDocument ссылается на документ в активном окне Word. Имя этого документа назначено переменной, ссылается на документ в активном окне Word. Имя этого документа назначено переменной strDocName .
Примечания
В разделе Справка для каждого свойства указывается, можно ли задать это свойство (читать/писать), только читать свойство (только для чтения) или только записывать свойство (только для записи). Кроме того, объектный браузер в редакторе Visual Basic отображает состояние чтения и записи в нижней части окна браузера при выборе свойства.
Что такое метод?
Метод — это действие, которое может выполняться объектом. Например, как и документ может быть напечатан, объект Document имеет метод PrintOut . Методы часто имеют аргументы, которые квалифицируют, как выполняется действие. В следующем примере печатаются первые три страницы активного документа.
В большинстве случаев методы являются действиями, а свойства — качествами. Использование метода вызывает что-то с объектом, а при использовании свойства возвращает сведения об объекте или вызывает изменение качества объекта.
Возвращение объекта
Большинство объектов возвращаются, возвращая один объект из коллекции. Например, коллекция Документов содержит открытые документы Word. Для возврата коллекции документов используется свойство Documents объекта Application (объект в верхней части иерархии объектов Word).
После доступа к коллекции можно вернуть один объект с помощью значения индекса в скобки (это похоже на работу с массивами). Значение индекса обычно является числом или именем. Дополнительные сведения см. в статью Возвращение объекта из коллекции.
В следующем примере свойство Documents используется для доступа к коллекции документов. Номер индекса используется для возврата первого документа в коллекции Документов . Затем метод Close применяется к объекту Document , чтобы закрыть первый документ в коллекции Документов .
В следующем примере используется имя (указанное в качестве строки) для идентификации объекта Document в коллекции Документов .
Объекты коллекции часто имеют методы и свойства, которые можно использовать для изменения всей коллекции объектов. Объект Documents имеет метод Сохранить , который сохраняет все документы в коллекции. В следующем примере можно сохранить открытые документы, применяя метод Сохранить .
Объект Document также имеет метод Сохранить , доступный для сохранения одного документа. В следующем примере сохраняется документ с именем Sales.doc.
Чтобы вернуть объект, который находится дальше в иерархии объектов Word, необходимо "сверлить" его с помощью свойств и методов для возврата объектов.
Чтобы узнать, как это сделать, откройте редактор Visual Basic и нажмите кнопку Object Browser в меню Просмотр. Щелкните приложение в списке Классов слева. Затем щелкните ActiveDocument из списка участников справа. В тексте в нижней части браузера объектов указывается, что ActiveDocument является свойством только для чтения, которое возвращает объект Document . Щелкните документ в нижней части браузера объектов; Объект Document автоматически выбирается в списке Классов, а в списке Участников отображаются члены объекта Document. Прокрутите список участников до тех пор, пока не найдете close. Щелкните метод Close . В тексте в нижней части окна Object Browser показан синтаксис метода. Дополнительные сведения о методе нажмите кнопку F1 или нажмите кнопку Справка , чтобы перейти к теме Справка метода Close .
С учетом этих сведений можно написать следующую инструкцию по закрытию активного документа.
В следующем примере максимально увеличивается окно активного документа.
Свойство ActiveWindow возвращает объект Window , который представляет активное окно. Свойство WindowState задавалось максимальной константе (wdWindowStateMaximize).
В следующем примере создается документ и отображается диалоговое окно Save As , чтобы было предоставлено имя документа.
Свойство Documents возвращает коллекцию Документов. Метод Add создает новый документ и возвращает объект Document . Затем метод Сохранить применяется к объекту Document .
Как видите, для сверки объекта используются методы или свойства. То есть вы возвращаете объект, применяя метод или свойство к объекту выше него в объектной иерархии. После возврата нужного объекта можно применить методы и управлять свойствами этого объекта.
Получение справки по объектам, методам и свойствам
До ознакомления с объектной моделью Word можно использовать средства, которые помогут вам сверлить иерархию.
Microsoft IntelliSense. При введите период (.) после объекта в редакторе Visual Basic, отображается список доступных свойств и методов. Например, если ввести Application. , отображается список методов и свойств объекта Application .
Объектный браузер. Браузер объекта в Visual Basic редактора отображает члены (свойства и методы) объектов Word.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Этим видео-уроком я хочу начать серию видео-уроков, которые будут посвящены основам работы в программе Microsoft Word.
Основы программирования на языке VBA
Процесс разработки программы на языке VBA – проекта, может состоять из нескольких этапов, в зависимости от конечного результата. Если необходимо получить программу, которая будет производить определенные вычисления или действия, расширяющие математические возможности стандартного приложения Microsoft Office, то достаточно создать программный модуль. Для применения этой программы можно поместить в рабочей области приложения кнопку, нажатие которой будет вызывать выполнение программы. Для этого в приложении необходимо включить панель инструментов с помощью команды Вид Панели инструментов Элементы управления, а затем создать кнопку с соответствующим программным кодом. Либо выполнять программу с помощью команды Сервис Макрос Макросы.
Разработка “полноценной” программы (для выполнения которой требуется отдельное окно, с различными элементами управления) будет включать два этапа. Первый этап – этап визуального программирования, на котором создается окно (форма) программы, где располагаются необходимые элементы управления. Второй – этап программирования, на котором создаются части программы (процедуры), выполняющиеся в ответ на определенные события. Событием является, например, щелчок левой кнопкой мыши на командной кнопке (событие Click), нажатие клавиши на клавиатуре (событие KeyPress) и т.д. Использовать такое приложение можно нажатием кнопки – «Запуск проекта».
2.1. Объекты, свойства и методы VBA
Одним из основных понятий VBA является объект. Объект – это то, чем вы управляете с помощью программы на языке VBA, например, форма, кнопка, рабочий лист или диапазон ячеек MS Excel. Каждый объект обладает некоторыми свойствами. Например, форма может быть видимой или невидимой в данный момент на экране. Другой пример свойства объекта – шрифт для отображения информации в ячейке (объекте) рабочего листа.
Объект содержит также список методов, которые к нему применимы. Методы – это то, что вы можете делать с объектом. Например, показать форму на экране или убрать её можно с помощью методов Show и Hide.
Таким образом, объект – это программный элемент, который имеет свое отображение на экране, содержит некоторые переменные, определяющие его свойства, и некоторые методы для управления объектом. Например, в MS Excel имеется много встроенных объектов:
Range(“Адрес”)
- диапазон ячеек (может включать только одну ячейку).
Cells(i, j)
- ячейка, находящаяся на пересечении i-й строки и j-го столбца рабочего листа MS Excel (i и j – целые числа).
Rows(№ строки)
- строка с заданным номером.
Columns(№ столбца)
- столбец с заданным номером
Sheets(“Имя”)
- лист с указанным именем.
Sheets(№ листа)
- лист с указанным номером.
WorkSheet
Установка значений свойств – это один из способов управления объектами. Синтаксис установки значения свойства объекта следующий:
Объект. Свойство = Выражение
Основным свойством объектов Cells и Range, является Value (значение), которое, однако, можно не указывать. Например:
Range(“A5:A10”). Value = 0 или Range(“A5:A10”) = 0 – в диапазон ячеек A5:A10 заносится значение 0.
Cells(2, 4). Value = n или Cells(2, 4) = n – в ячейку, находящуюся на пересечении 2-й строки и 4-го столбца (ячейка с адресом “D2”), заносится значение переменной n.
Синтаксис чтения свойств объекта следующий:
Переменная = Объект. Свойство
Xn = Cells(1, 2).Value или Xn = Range(“B1”).Value – переменной Xn присваивается значение из ячейки B1 текущего рабочего листа.
Синтаксис применения методов к объекту:
Объект. Метод
Sheets(2).Activate – сделать активным лист с №2.
Sheets(“Диаграмма”).Delete – удалить лист с именем “Диаграмма”.
Range("A5:A10").Clear – очистить диапазон ячеек A5:A10.
Range("A2:B10").Select – выделить диапазон ячеек A2:B10.
В MS Excel имеются объекты, которые содержат другие объекты. Например, рабочая книга содержит рабочие листы, рабочий лист содержит диапазон ячеек и т.д. Объектом самого высокого уровня является Application (приложение). Если вы изменяете его свойства или вызываете его методы, то результат применяется к текущей работе MS Excel. Например:
Application.Quit - завершение работы с Excel.
Отметим, что точка после имени объекта может использоваться для перехода от одного объекта к другому. Например, следующее выражение очищает вторую строку рабочего листа Май в рабочей книге Отчет:
Application.Workbooks("Отчет").Worksheets("Май").Rows(2).Delete
Нужно отметить следующее:
- Можно не писать имя объекта Application, так как это подразумевается по умолчанию.
- При работе с подобъектом уже активизированного объекта нет необходимости указывать содержащий его объект.
- VBA использует некоторые свойства и методы, которые возвращают объект к которому они относятся (это позволяет быстро указывать нужный объект). Примеры таких свойств: ActiveCell (активная ячейка), ActiveSheet (активный лист), ActiveWorkBook (активная рабочая книга). Так, установить значение активной ячейки можно следующим образом:
ActiveCell.Value .
2.2. Описание данных
Все объекты, которыми оперирует язык программирования VВА, относятся к определенному типу.
Тип данных определяет:
– область возможных значений переменной;
– структуру организации данных;
– операции, определенные над данными этого типа.
Типы данных подразделяются на простые (скалярные) и сложные (структурированные). У простых типов данных возможные значения данных едины и неделимы. Сложные же типы имеют структуру, в которую входят различные простые типы данных. Скалярные типы данных представлены в таблице 2.1.
Читайте также: