- •Excel и его обьекты. Объект Application
- •1.1. Особенности программирования для ms Excel
- •13.2. Объект Application
- •1.3. Методы Application
- •1.3.1. Calculate - принудительный пересчет
- •1.3.2. GoTo - переход в ячейку
- •1.3.3. SendKeys - имитация нажатий на клавиши клавиатуры
- •1.3.4. Wait - пауза при выполнении макроса
- •1.4. Свойства Application
- •1.4.1. ActiveCell, ActiveChart, ActivePrinter, ActiveSheet, ActiveWindow, ActiveWorkbook - активные объекты
- •1.4.2. Cells, Columns, Rows, Sheets, Workbooks, Worksheets, Names - наборы объектов и коллекции
- •1.4.3. Range - ячейка или группа ячеек
- •1.4.4. ScreenUpdating - обновление экрана
- •1.4.5. Selection - ссылка на выделенный объект
- •1.4.6. WorksheetFunction - формулы Excel в коде vba
- •1.5. События Application
13.2. Объект Application
Принципы работы с объектом Application в MS Excel очень похожи на таковые в MS Word.
Рассмотрим пример. Откроем MS Excel, добавим на рабочий лист кнопку, добавим в обработчик щелчка по кнопке такой код.
MsgBox Excel.Application.Name
После выполнения программы в окне сообщения отобразится имя приложения - в данном случае - Microsoft Excel. Очевидно, что свойство Name объекта Application возвращает имя приложения.
Теперь рассмотрим наиболее важные методы и свойства Application. Некоторые из них похожи на таковые в MS Word. Например, метод Quit точно так же, как в Word, закрывает приложение, свойство Visible отвечает за видимость окна программы и т.д.
1.3. Методы Application
1.3.1. Calculate - принудительный пересчет
Этот метод, вызываемый для объекта Application, позволяет пересчитать все открытие книги. Его же можно вызывать для отдельных книг (объект Workbook) листов (Worksheet), ячеек и их диапазонов (Range). Например, код из листинга. позволяет пересчитать все открытые книги.
Application.Calculate
1.3.2. GoTo - переход в ячейку
Позволяет выделить любой диапазон ячеек в любой книге, причем, если книга не активна - она будет активирована. Так же метод может запускать макросы Microsoft Excel.
Полный вызов метода выглядит так:
Goto(Reference, Scroll)
В качестве параметра Reference используется ссылка на ячейку или диапазон ячеек, которые должны быть выделены после вызова метода. Так же здесь может быть использовано имя макроса - тогда он будет запущен.
Параметр Scroll отвечает за "перемотку" листа Excel к выделенным ячейкам - так, чтобы левый верхний угол выделения совпадал бы с левым верхним углом отображаемой области листа. Если Scroll установлен в True - лист перематывается, если в False - нет.
Например, такой вызов позволяет выделить ячейку H500 на активном листе.
Application.Goto _
Reference:=ActiveSheet.Range("H500"), _
Scroll:=True
Как видите, обращение к активному листу очень напоминает обращение к активному документу в MS Word. Обратите внимание на то, что мы используем полное обращение к методу - Application.GoTo - как вы знаете, обычно свойства и методы объекта Application можно использовать в коде, не указывая этого объекта. Однако, если в этом случае не указать Application, то вместо метода GoTo программа попытается выполнить оператор безусловного перехода GoTo.
1.3.3. SendKeys - имитация нажатий на клавиши клавиатуры
Очень интересный метод - позволяет передавать в активное окно приложения нажатия клавиш. Полный вызов метода выглядит так:
SendKeys(Keys, Wait)
Параметр Keys позволяет задавать клавиши, нажатия которых будут переданы приложению. Метод поддерживает эмуляцию как алфавитно-цифровых, так и управляющих клавиш, для которых применяется специальная кодировка. Алфавитно-цифровые клавиши указываются при вызове в своем обычном виде Например, для передачи символа "Ф" нужно указать его при вызове метода и т.д.
Чтобы передать приложению нажатия клавиши Backspace - используйте код {BS}. Для передачи нажатия кнопки Enter используйте значок ~ (тильда), для клавиши Del - код {DEL}.
Для передачи приложению нажатий клавиш Shift, Ctrl или Alt, можно воспользоваться следующими кодами этих клавиш:
-
SHIFT - + (знак плюс)
-
CTRL - ^ (крышка)
-
ALT - % (знак процента)
Параметр Wait может принимать значения True или False. Если он будет установлен в True - макрос подождет, пока приложение обработает введенные с "клавитуры" данные, после чего продолжит выполнение. Если в False - макрос ждать не будет.
Рассмотрим пример. С помощью метода SendKeys введем в ячейку A1 текст "Сейчас закрою программу!", после чего попытаемся закрыть программу, "нажав" сначала Alt, потом Ф (для открытия главного меню Office), и потом - Ы - для выхода из программы. Подразумевается, что при запуске макроса указанная ячейка активна - в ней находится рамка выделения.
Application.SendKeys ("Сейчас закрою программу!")
Application.SendKeys ("%ФЫ")
После выполнения этого кода вы увидите окно со стандартным вопросом о сохранении документа.