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

Вид материалаРеферат
11.6 Использование семейства Workbooks и объекта Workbook
11.6.1 Использование свойств и методов семейства Workbooks
Свойство Count.
Dim iNumWB As Integer
Workbooks.Add template
Dim variable_name as Workbook
Dim oNewWorkbook as Workbook
Workbooks.Open(FileName, UpdateLinks, Readonly, Format, _
Format значение 6, то параметр Delimiter
True для необязательного параметра Notify
11.6.2 Использование свойств объекта Workbook
Sub Name_Those_Workbooks ()
11.6.3 Методы объекта Workbook
Workbook_object. Activate
251 Если рабочая книга закрывается с помощью метода Close
Save, присваивает свойству Saved
AccessMode, ConflictResolution, AddToMru, TextCodePage, _
11.6.4 Использование событий объекта Workbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub Workbook_BeforePrint(Cancel As Boolean)
...
Полное содержание
Подобный материал:
1   ...   17   18   19   20   21   22   23   24   25

11.6 Использование семейства Workbooks и объекта Workbook


Нa следующем уровне иерархии классов Excel находится семейство Workbooks, которое содержит объекты Workbook. Элемент Workbook – это объект, представляющий файл Excel. Большинство других используемых при разработке объектов, например, объекты Range, ChartObjects PivotTables, хранятся в элементе Workbook.

11.6.1 Использование свойств и методов семейства Workbooks



Зная как работать со свойствами и методами семейства Workbooks, можно выполнить все операции над файлами. Например, можно с помощью метода Add создать файл рабочей книги.

Свойство Count. Семейство Workbooks имеет всего несколько свойств. Одним из них является доступное только для чтения свойство Count. В нем хранится число объектов Workbook в семействе Workbooks. Например, если имеются пять открытых рабочих книг, то следующая программа выводит текст "Открыто 5 рабочих книг":

Dim iNumWB As Integer

iNumWB = Workbooks.Count

MsgBox "Открыто " & iNumWB & " рабочих книг."

Метод Add. Семейство Workbooks имеет всего несколько методов. Один из наиболее важных – метод Add. Все семейства имеют метод Add. Он создает новый объект семейства, для семейства Workbooks – это новая рабочая книга. Метод Add эквивалентен команде Файл\Создать (File\New). После создания книги она становится активной. Метод Add имеет следующий синтаксис:


Синтаксис 1:

Workbooks.Add template


Синтаксис 2 (описывается объектная переменная и используется инструкция Set, чтобы назначить переменной ссылку на созданный объект):

Dim variable_name as Workbook

Set variable_name = Workbooks.Add(Template)

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

В качестве значения параметра template можно использовать следующие константы: xlWBATChart, xlWBATExcel-4IntlMacroSheet, xlWBATExcel4MacroSheet или xlWBATWork-sheet. Если аргумент template опущен, то создается рабочая книга с пустыми листами, параметры которой определяются с помощью команды Сервис\Параметры во вкладке Общие, либо задаются значением свойства Application.SheetsInNewWorkbook.

Приведем пример программы, в которой показано создание рабочих книг:

Dim oNewWorkbook as Workbook

'Создание рабочей книги с помощью константы

'Workbooks.Add xlWBATWorksheet

'Создание рабочей книги с использованием в качестве шаблона

'другого файла

Workbooks.Add "C:\My Documents\Expense Report.xls"

'Создание рабочей книги и связывание

'с ней объектной переменной

Set oNewWorkbook = Workbooks.Add


Метод Open. Метод Open используется для открытия существующей рабочей книги. Метод имеет следующий синтаксис:


Workbooks.Open(FileName, UpdateLinks, Readonly, Format, _

Password, WriteResPassword, IgnoreReadOnlyRecommended, _

Origin, Delimiter, Editable, Notify, Converter, AddToMRU)


Параметр FileName – обязательный аргумент, определяющий имя открываемой рабочей книги и полный путь к ней.

Параметр UpdateLinks – необязательный аргумент, который позволяет задать способ обновления ссылок в файле. Если данный параметр опущен, выводится запрос на указание метода обновления. В табл. 11.4 показаны допустимые значения параметра UpdateLinks.


Таблица 11.4  Значения параметра UpdateLinks


Значение

Описание

0

Не обновлять ссылки

1

Обновлять только внешние ссылки

2

Обновлять только удаленные ссылки

3

Обновлять все ссылки


Другим необязательным параметром является аргумент ReadOnly. По умолчанию его значение равно False. Если присвоить ему значение True, то рабочая книга открывается только для чтения.

Дополнительный параметр Format используется для работы с текстовыми файлами. Он определяет символ разделителя содержимого полей записей. В табл. 11.5 показаны допустимые значения для этого параметра.


Таблица 11.5  Значения параметра Format


Значение

Разделитель

1

Символ табуляции

2

Запятая

3

Пробел

4

Точка с запятой

5

Нет разделителя

6

Другой символ (см. ниже параметр Delimiter)


Если при открытии рабочей книги требуется ввод пароля, то его можно задать, используя необязательный параметр Password. Если данный параметр опущен, а в рабочей книге имеется пароль на открытие, то выводится запрос на ввод пароля.

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

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

Если файл является текстовым, то дополнительный параметр Origin позволяет указать его тип, чтобы использовать соответствующую кодовую страницу и правильно распознать символы конца строк. Допустимыми значениями для данного параметра являются константы xlWindows и xlMSDOS. Если параметр не задан, то используется значение для текущей операционной системы.

Дополнительный параметр Delimiter используется совместно с параметром Format. Если присвоить параметру Format значение 6, то параметр Delimiter определяет символ, который требуется использовать в качестве разделителя.


249

Необязательный параметр Editable используется только для надстроек Excel 4.0. Если открываемый файл является надстройкой Excel 4.0, присвойте данному параметру значение True, чтобы открыть файл для редактирования. Если же аргумент Editable имеет значение False или опущен, то надстройка будет скрыта, и ее нельзя вывести для внесения изменений. Присваивание значения True параметру Editable при открытии файла, не являющегося надстройкой, приводит к тому, что макрос Auto_Оpen не выполняется.

Если файл нельзя открыть в режиме чтения или записи, то при задании значения True для необязательного параметра Notify имя файла добавляется в список нотификации файлов. Если же данный аргумент имеет значение False или опущен, то запрос на нотификацию не выводится и открыть недоступный файл невозможно.

Дополнительный параметр Converter используется для передачи индекса конвертера файла, с помощью которого производится попытка открыть файл. Если заданный конвертер не распознает файл, то применяются другие программы преобразования.

Последним параметром метода Open является необязательный параметр AddToMRU. Присвойте ему значение True, чтобы добавить рабочую книгу в список ранее открывавшихся файлов. По умолчанию для данного параметра применяется значение False.

Метод Close. Метод Close позволяет закрыть рабочую книгу. Метод имеет следующий синтаксис:

Application.Close

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



Объект Workbook представляет рабочую книгу, свойства которой требуется использовать в программе. Примерами ссылок на рабочую книгу являются Workbooks("name_of_work-book"), где параметр name_of_workbook – имя используемой рабочей книги, а также ActiveWorkbook или ThisWorkbook.

Свойство ActivateSheet. Объект Workbook имеет полезные свойства. Одно из них – свойство ActivateSheet, содержащее ссылку на активный лист в данной рабочей книге. Если в книге нет активного листа, то в свойстве хранится значение Nothing. Свойство доступно только для чтения.

Свойство Author. Свойство Author используется для чтения или установки имени автора рабочей книги. Кроме того, данное свойство применяется в программе установки для регистрации пользователя. После создания используемых в приложении рабочих книг, задайте имя автора рабочей книги с помощью свойства Author:


Sub Name_Those_Workbooks ()

Dim registration_name As String

'По умолчанию имя пользователя равно значению свойства 'Application.UserName.

registration_name = InputBox("Введите свое имя или _

название вашей фирмы:", "Регистрация", _

default:=Application.UserName)

ThisWorkbook.Author = registration_name

MsgBox "This application has been registered to " & _

ThisWorkbook.Author

End Sub


Свойство Saved. Другим полезным свойством объекта Workbook является свойство Saved. Оно имеет значение True, если в рабочую книгу не будут внесены изменения с момента последнего сохранения. Данное свойство доступно как для чтения, так и для установки. Например, если требуется закрыть рабочую книгу, которая редактировалась, либо если необходимо просто выдать запрос на ее сохранение, используйте следующую программу:

Workbooks("SalesData").Saved = False

Workbooks("SalesData").Close

11.6.3 Методы объекта Workbook



Параметр Workbook_object, используемый при описании синтаксиса методов, является ссылкой на рабочую книгу. Примерами ссылок на рабочую книгу являются выражения Workbooks("name_of_workbook"), где параметр name_of_work-book – имя используемой рабочей книги, а также ActiveWorkbook или ThisWorkbook.

Метод Activate. Метод Activate используется очень часто. Он применяется для активизации требуемой рабочей книги. Метод имеет следующий синтаксис:

Workbook_object. Activate

Метод Close. Объект Workbook, как и семейство Workbooks, имеет метод Close. Однако метод Close для объекта Workbook включает дополнительные параметры:

Workbook_object.Close (SaveChanges, FileName, RouteWorkbook)


251

Если рабочая книга закрывается с помощью метода Close, то макрос Auto_close не выполняется. Если требуется вручную запустить процедуру Auto_close, необходимо воспользоваться методом RunAutoMacros.

Необязательный параметр SaveChanges позволяет задать сохранение рабочей книги. Если файл не изменялся, то данный параметр игнорируется. В противном случае, можно присвоить аргументу значение True, чтобы сохранить изменения в рабочей книге. Если файл только что создан и, следовательно, не имеет имени, то имеется возможность задать его имя с помощью параметра FileName. Если параметр FileName опущен, то выводится запрос ввод имени. Чтобы переслать рабочую книгу другому пользователю, присвойте необязательному параметру Route-Workbook значение True.

Метод Route. С помощью метода Route можно переслать рабочую книгу другому пользователю, используя текущий маршрут. При этом свойству Routed присваивается значение True. Метод имеет следующий синтаксис:

Workbook_object.Route

Приведем пример использования метода Route:

'Пересылка активной рабочей книги

ActiveWorkbook.HasRoutingSlip = True

With ActiveWorkbook

.Recipients = "Сергей Власенко"

.Subject = "Отработанные часы"

.Message = "Информация об отработанных часах."

End With


'Пересылка рабочей книги, не являющейся активной

Workbooks("SalesData.xls").HasRoutingSlip = True

With Workbooks("SaleData.xls").RoutingSlip

.Delivery = xlOneAfterAnother

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

.Recipients = Аrrау("Федор Новиков", "Дмитрий Козлов")

.Message = "Информируйте меня о своих соображениях."

End With

Workbooks("SalesData.xls").Route


Методы Save и SaveAs. Метод Save позволяет сохранить рабочую книгу. Он имеет следующий синтаксис:

Workbook_object.Save

Метод SaveAs также сохраняет рабочую книгу, но он включает дополнительные параметры. Данный метод, как и метод Save, присваивает свойству Saved значение True. Метод SaveAs имеет следующий синтаксис:

Workbook_object.SaveAs(Filename, FileFormat, Password, _

WriteResPassword, ReadOnlyRecommended, CreateBackup, _

AccessMode, ConflictResolution, AddToMru, TextCodePage, _

TextVisualLayout)

Параметр Filename – имя сохраняемого файла. Если в имени не указан путь, то рабочая книга сохраняется в текущей папке. Чтобы записать файл в формате, отличном от формата рабочей книги Microsoft Excel, используется параметр FileFormat.

При сохранении рабочей книги можно установить пароль доступа к файлу из 15 символов. Для этого используется необязательный параметр Password. Кроме того, имеется возможность задать пароль на сохранение с помощью аргумента WriteResPassword. Если необходимо установить для файла рекомендуемый режим доступа только для чтения, присвойте дополнительному параметру ReadOnlyRecommended значение True.

Если требуется создать резервную копию файла, присвойте необязательному параметру CreateBackup значение True.

Дополнительный параметр AccessMode позволяет установить режим доступа к рабочей книге. При этом можно использовать три константы: xlShared (общая рабочая книга), xlExclusive (монопольный доступ) или xlNoChange (запрет изменения режима доступа).

Необязательный аргумент ConflictResolution определяет способ разрешения конфликтов при одновременном внесении несколькими пользователями изменений в общие рабочие книги. Допустимыми значениями параметра являются: xlUser-Resolution (отображение диалогового окна разрешения конфликтов), xlLocalSessionChanges (автоматическое принятие изменений, внесенных пользователем) или xlOtherSessionChanges (принятие изменений, внесенных другими пользователями). Если параметр опущен, по умолчанию используется значение xlUserResolution.

По умолчанию имена рабочих книг, сохраненных с помощью метода SaveAs, не добавляются в список ранее открывавшихся файлов. Чтобы внести название файла в этот список, присвойте аргументу AddToMru значен True.

11.6.4 Использование событий объекта Workbook



Для обработки событий объекта Workbook, в отличие от событий объекта Application, не требуется создавать модуль класса или производить другие специальные действия. События в рабочей книге возникают при изменении объекта Workbook или при редактировании в ней листа. Чтобы вывести список событий рабочей книги:
  1. Восстановите или сверните окно рабочей книги. Если окно развернуто, то вывод списка событий невозможен.
  2. Щелкните правой кнопкой мыши по заголовку окна рабочей книги.
  3. Выберите из контекстного меню команду Исходный текст (View Code). Запускается редактор VBA (рис. 11.2).
  4. Выберите имя требуемого события в правом списке окна модуля.




Рис. 11.2  Процедура обработки события рабочей книги

Объект Workbook имеет множество событий. Ниже описываются некоторые из них.


Событие BeforeClose. Событие BeforeClose возникает при закрытии рабочей книги до вывода запроса на сохранение изменений. Процедура обработки данного события имеет следующий синтаксис:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Параметр Cancel имеет значение False при возникновении события. Если процедура обработки события присваивает значение True данному параметру, то рабочая книга не закрывается.


Событие BeforePrint. Событие BeforePrint возникает непосредственно перед печатью всей рабочей книги или ее части. Процедура обработки данного события имеет следующий синтаксис:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Параметр Cancel имеет значение False при возникновении события. Если требуется отменить печать документа, присвойте данному параметру значение True.


Событие BeforeSave. Событие BeforeSave возникает непосредственно перед сохранением рабочей книги. Процедура обработки данного события имеет следующий синтаксис:

Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, _

Cancel As Boolean)

Если требуется отобразить диалоговое окно Сохранение документа, присвойте параметру SaveAsUi значение True. Параметр Cancel имеет значение False при возникновении события. Если требуется отменить сохранение документа, присвойте данному параметру в процедуре обработки значение True.


Событие Deactivate. Событие Deactivate возникает, когда рабочая книга теряет фокус. Синтаксис процедуры обработки следующий:

Private Sub Workbook_Deactivate()


Событие NewSheet. Событие NewSheet возникает при добавлении нового листа в рабочую книгу. Синтаксис процедуры обработки следующий:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

Аргумент Sh – вновь созданный лист.


Событие Open. Событие Open возникает при открытии рабочей книги. Процедура обработки данного события имеет следующий синтаксис:

Private Sub Workbook_Open()


Приведем пример, в котором процедура обработки события Open устанавливает значения различных свойств рабочей книги:

Private Sub Workbook_Open()

With ActiveWindow

.DisplayGridlines = False

.DisplayHeadings = False 'убирает сетку таблицы

.DisplayHorizontalScrollBar = False 'убирает горизон-

'тальную линейку прокрутки

.DisplayVerticalScrollBar = False 'убирает вертикальную

'линейку прокрутки

.DisplayWorkbookTabs = False 'убирает ярлычки листов

End With

End Sub


На рис. 11.3 показано, как выглядит окно рабочей книги после выполнения данной процедуры. Обратите внимание на то, что ярлычки рабочих листов, сетка и полосы прокрутки не отображаются.





Рис. 11.3  Результат выполнения процедуры Workbook_Open


Событие SheetActivate. Событие SheetActivate возникает при активизации любого рабочего листа книги. Процедура обработки данного события имеет следующий синтаксис:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)


Параметр Sh является ссылкой на активизированный элемент, будь то объект Chart или объект Worksheet. Следует отметить, что событие SheetActivate не возникает в рабочих листах диалоговых окон Excel 5.O.

Событие SheetBeforeDoubleClick. Событие SheetBefore-DoubleClick возникает при двойном щелчке по любому рабочему листу книги. Процедура обработки исполняется до выполнения стандартной операции, которая производится по умолчанию при двойном щелчке. Следует отметить, что событие SheetBeforeDoubleClick не возникает на листах диаграмм. Синтаксис процедуры обработки данного события следующий:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, _

ByVal Target As Range, ByVal Cancel As Boolean)


Параметр Sh является ссылкой на объект Worksheet, по которому произведен двойной щелчок. Аргумент Target – ближайшая к указателю мыши ячейка в момент возникновения события SheetBeforeDoubleClick. Aprумент Cancel имеет значение False при возникновении данного события. Если требуется отменить выполнение стандартной обработки двойного щелчка, присвойте данному параметру в процедуре обработки значение True.

Событие SheetBeforeRightClick. Событие SheetBeforeRight-Click возникает при щелчке правой кнопкой мыши по рабочему листу. Процедура обработки исполняется до выполнения стандартной операции, которая производится по умолчанию при нажатии правой кнопки мыши. Следует отметить, что событие SheetBeforeRightClick не возникает на листах диаграмм. Синтаксис процедуры обработки данного события следующий:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, _

ByVal Target As Range, ByVal Cancel As Boolean)


Параметр Sh является ссылкой на объект Worksheet, по которому произведен щелчок правой кнопкой мыши. Аргумент Target – ближайшая к указателю мыши ячейка в момент возникновения события SheetBeforeRightClick.

Если требуется отменить выполнение стандартной обработки щелчка правой кнопкой мыши, присвойте параметру Cancel в процедуре обработки значение True.

Событие SheetCalculate. Событие SheetCalculate возникает после перерасчета значений на любом рабочем листе книги или после вывода измененных данных на диаграмме. Синтаксис процедуры обработки данного события следующий:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)


257

Параметр Sh является ссылкой на лист, для которого произведен перерасчет значений.

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


Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal _

Source As Range)

Параметр Sh является ссылкой на объект Worksheet, на котором находится ячейка с новыми данными. Аргумент Source указывает на диапазон, ячейки которого изменились. Данную процедуру обработки можно использовать для проверки условий на значение.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal _

Source As Range)

If Worksheets("Data").Range("A7").Value > 5Then

Msgbox "Значение не должно быть меньше 5."

Worksheets ("Data").Range("A7").Activate

End If

End Sub

Событие SheetDeactivate. Событие SheetDeactivate возникает, когда активный лист рабочей книги теряет фокус. Синтаксис процедуры обработки данного события следующий:

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)

Событие SheetSetectionChange. Событие SheetSelectionChange возникает при изменении выделенного диапазона ячеек. Следует отметить, что данное событие не возникает на листах диаграмм. Синтаксис процедуры работки данного события следующий:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _

Val Target As Excel.Range)

Параметр Sh является ссылкой на рабочий лист, на котором выделен новый диапазон ячеек. Аргумент Target определяет выбранный диапазон.