Содержание 1 введение 6

Вид материалаРеферат
11 Автоматизация работы в Excel с помощью VBA 11.1 Модель объектов Excel
11.2 Использование объекта Application
11.3 Использование свойств объекта Application
Application.Caption = "Корпорация АБВ. Продажи"
XlWait определяет использование указателя мыши в виде песочных часов. Рекомендуется присвоить свойству Cursor
Cursor необходимо установить исходный вид мыши, присвоив свойству Cursor
Свойство DisplayAlerts.
Свойство EnableCancelKey.
Свойство PathSeparator
Dim strPath As String
Workbooks.Open strPath & "temp.xls"
Свойство StatusBar
Application.DisplayStatusBar = True
Application.Cursor = xlWait
Workbooks.Open Application.ThisWorkbook.Path & _
Sub FileNameMe()
Подобный материал:
1   ...   13   14   15   16   17   18   19   20   ...   25

11 Автоматизация работы в Excel с помощью VBA




11.1 Модель объектов Excel



Excel был первым офисным приложением, в котором VBA использовался как язык разработки приложений. Модель объектов Excel совершенствуется в течение нескольких лет, а теперь она стала более удобной и полной.

В модели объектов Excel имеются более 100 объектов и семейств. Не следует пугаться этого. Вероятно, окажется, что приблизительно 10 процентов объектов и семейств достаточно, чтобы выполнить 90 процентов всех возможных действий. Примерами наиболее часто используемых объектов и семейств являются объекты Application, Рабочая книга (Workbook) и Рабочие книги (Workbooks), Рабочий лист (Worksheet) и Рабочие листы Worksheets, а также объект Диапазон (Range). С помощью только этих объектов и семейств можно произвести огромное множество операций.

11.2 Использование объекта Application



Исходным элементом любой модели объектов Office является объект Application. Он представляет все приложение в целом. С помощью свойств и методов элемента Application можно установить параметры работы программы, такие как задаваемые с помощью команды Сервис/Параметры. В свойствах объекта Application, например, Активная книга (ActiveWorkbook), Активный лист (ActiveSheet) и Активная ячейка (ActiveCell) хранится информация об объекте, с которым в текущий момент работает пользователь. Кроме того, данный объект имеет полезные методы, например, метод Application.InputBox, который удобнее, чем стандартная функция VBA InputBox().

11.3 Использование свойств объекта Application



Как уже отмечалось выше, свойства объекта Application позволяют задавать общие параметры работы приложения Excel. Рассмотрим некоторые свойства элемента Application.



Рис. 11.1  Модель объектов Excel

Свойства ActiveWorkbook, ActiveSheet и ActiveCell. В данных свойствах хранится информация об активном объекте. Активный объект – это объект, с которым в текущий момент взаимодействует пользователь. Значение свойства ActiveCell хранится в свойстве ActiveSheet, а величина свойства ActiveSheet – в свойстве ActiveWorkbook. Приведем пример использования свойства ActiveCell:

With ActiveCell

.FontBold = True

.Value = "Отчет о продажах"

End With

Свойство Caption. В свойстве Caption объекта Application хранится имя, которое появляется в заголовке окна приложения Excel. Данное свойство доступно как для чтения, так и для установки. Если требуется скрыть, что приложение в действительности работает в Excel, то можно вместо значения "Microsoft Excel" указать другую строку. Покажем, как устанавливается значение свойства:

Application.Caption = "Корпорация АБВ. Продажи"

Чтобы вернуть заголовок "Microsoft Excel", укажите ключевое слово Empty:

Application.Caption = Empty

Свойство Cursor. Свойство Cursor используется для задания внешнего вида указателя мыши во время выполнения макроса. При задании значения данного свойства можно указать одну из четырех констант Excel:
  • Константа XlDefault определяет использование указателя, заданного по умолчанию в приложении Excel.
  • Константа XlWait определяет использование указателя мыши в виде песочных часов. Рекомендуется присвоить свойству Cursor это значение в начале обработки данных (например, извлечения информации), чтобы сообщить пользователю, что ему требуется подождать завершения операции.
  • Константа XlNorthwestArrow используется реже. Она определяет вывод указателя мыши в виде стрелки основного режима.
  • Константа XlIBeam используется также не очень часто. Она определяет вывод указателя мыши в виде стрелки выделения текста.

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

Свойство DisplayAlerts. Если требуется отключить вывод встроенных подсказок и предупреждений при выполнении макроса, необходимо присвоить значение False свойству DisplayAlerts. В этом случае Excel производит стандартные действия, выбирая применяемый по умолчанию ответ на сообщения. Исходное значение свойства DisplayAlerts равно True. Если макрос изменяет значение свойства DisplayAlerts, то перед окончанием его работы требуется присвоить данному свойству значение True.

Свойства DisployFormulaBar, DisplayScrollBars и DisplayStatusBar. Чтобы скрыть строку формулы, полосы прокрутки или строку состояния, требуется присвоить значение False свойству DisplayFormulaBar, DisplayScrollBars или DisplayStatusBar соответственно. И, наоборот, для вывода требуемого элемента интерфейса необходимо присвоить значение True соответствующему свойству. Значение по умолчанию для данных свойств равно True.

Свойство EnableCancelKey. Обычно прерывание выполнения макроса осуществляется с помощью комбинации клавиш <Ctrl>+<Break>. По умолчанию свойство EnableCancelKey равно значению xlInterrupt, которое допускает остановку процедуры пользователем для ее отладки или завершения. Если же требуется запретить прерывание выполнения, присвойте значение xlDisabled или xlErrorHandler свойству EnableCancelKey. Heoбxодимо отметить, что константу xlDisabled следует использовать с особой осторожностью. Если свойство EnableCancelKey имеет данное значение, то выход из бесконечного цикла или прерывание макроса невозможно. Таким образом, перед установкой свойства требуется убедиться, что процедура полностью и тщательно отлажена.

Вместо константы xlDisable можно указать константу xlErrorHandler. Если свойство EnableCancelKey равно данному значению, то в выполняемой процедуре осуществляется переход к процедуре обработки ошибки. При использовании константы xlErrorHandler необходимо включить в макрос подпрограмму обработки ошибки, указав инструкцию On Error GoTo. Hомер ошибки, возникающей в результате нажатия комбинации клавиш <Ctrl>+<Break>, равен 18.

По завершении работы макроса свойству EnableCancelKey автоматически присваивается значение xlInterrupt.

Свойство PathSeparator. Свойство PathSeparator доступно только для чтения. В нем хранится символ разделителя используемого в системе: для Windows – наклонная черта (\), для Macintosh – двоеточие (:). Данное свойство применяется, если необходимо использовать приложения на обеих платформах. Покажем применение свойства PathSeparator:


'Данный макрос открывает рабочую книгу temp.xls,

'находящуюся в текущем каталоге.

Dim strPath As String

'В свойстве Application.ThisWorkbook.Path хранится путь

'к рабочей книге, связанной с данной процедурой.

'Свойство Application.pathSeparator равно \ или :

'в зависимости от операционной системы.

StrPath = Application.ThisWorkbook.Path & Application.PathSeparator

'Переменная strPath является параметром метода Open

'семейства Workbooks. Данный метод открывает указанный файл.

Workbooks.Open strPath & "temp.xls"

Свойство ScreenUpdating. Один из способов ускорить выполнение программы заключается в том, чтобы присвоить значение False свойству ScreenUpdating. Обычно этот метод применяется для макросов, которые отображают большое количество текста на рабочий лист. Если свойство ScreenUpdating равно False, то при выполнении макроса отключается вывод на экран. В конце процедуры требуется присвоить значение True свойству ScreenUpdating.

Свойство StatusBar. Свойство StatusBar позволяет задать текст строки состояния. Рекомендуется применять данное свойство совместно со свойством Cursor. Приведем пример использования свойства StatusBar:


'Присвоить значение True свойству DisplayStatusBar,

'чтобы вывести строку состояния,

Application.DisplayStatusBar = True


'Установка текста строки состояния.

Application.StatusBar = "Обработка, пожалуйста, подождите.. "


'Замена обычного указателя мыши на песочные часы,

Application.Cursor = xlWait


'Вызов требуемой процедуры.

GetSalesData


'Восстановление обычного вида указателя.

Application.Cursor = xlDefault


'Восстановление стандартного текста строки состояния

Application.StatusBar = False

Свойство ThisWorkbook. В свойстве ThisWorkbook хранится ссылка на объект Workbook, являющийся рабочей книгой, в которой содержится выполняемый макрос. Значение данного свойства и свойства ActiveWorkbook необязательно совпадают. Если в Excel открыто несколько рабочих книг, возможно, что в свойстве ActiveWorkbook содержится ссылка на одну рабочую книгу, а в свойстве ThisWorkbook – на другую, которая и содержит выполняющийся макрос. Покажем пример использования свойств ThisWorkbook, если необходимо открыть рабочую книгу, которая находится в той же папке, что и рабочая книга, содержащая выполняющийся макрос:

Workbooks.Open Application.ThisWorkbook.Path & _

Application.PathSeparator & "SalesReport.xls"

Свойство UserName. В свойстве UserName хранится имя текущего пользователя. Оно допускает как чтение, так и установку. Значение данного свойства по умолчанию равно содержимому поля Имя пользователя (UserName), находящееся во вкладке Общие (General) диалогового окна Параметры (Options) (для открытия данного диалогового окна выберите команду Сервис\Параметры).

Данное свойство можно использовать при создании файлов, в названии которых участвует имя пользователя:

Sub FileNameMe()

Dim sUserName As String

Dim sMsgBoxPrompt As String

Dim sFileName As String

Dim iResponse As Integer


sUserName = Application.UserName

sMsgBoxPrompt = "Имя файла: " & sUserName & vbCrLf

sMsgBoxPrompt = sMsgBoxPrompt & "Использовать данное _

имя файла?"

iResponse = MsgBox(sMsgBoxPrompt, vbYesNo)

If iResponse = vbNo Then

sUserName = InputBox("Введите свое имя: ")

End If


sFileName = Application.Path & Application.PathSeparator & _

sUserName

ActiveWorkbook. SaveAs FileName:=sFileName

End Sub


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


Sub WhatsMyVersion()

If Application.Version <> "8.0" Then

MsgBox "Для выполнения приложения требуется _

Microsoft Excel 8.0."

End If

End Sub