Опубликован: 13.09.2006 | Уровень: для всех | Доступ: свободно
Лекция 3:

Объекты Excel

Коллекция Workbooks

Коллекция Workbooks, содержащая все открытые рабочие книги, имеет обычные для коллекций свойства Application, Count, Creator, Parent и Item. У нее всего 4 метода:

  • Add([Template]) As Workbook - добавляет новую книгу в коллекцию. Новая книга создается на основе шаблона, заданного параметром Template. Если он опущен, то используется шаблон по умолчанию. Метод возвращает в качестве результата созданную рабочую книгу.
  • Open(Filename As String, [UpdateLinks], [ReadOnly], [Format], [Password], [WriteResPassword], [IgnoreReadOnlyRecommended], [Origin], [Delimiter], [Editable], [Notify], [Converter], [AddToMru]) As Workbook - открывает существующую книгу. При открытии можно задавать параметры, управляющие свойствами открываемого документа. Обязательным параметром является только первый, задающий имя файла, содержащего открываемую книгу.
  • Close -закрывает все книги коллекции. При закрытии той или иной книги может появиться диалоговое окно с предложением сохранить сделанные изменения.
  • OpenText(Filename As String, [Origin], [StartRow], [DataType], [TextQualifier As XlTextQualifier = xlTextQualifierDoubleQuote], [ConsecutiveDelimiter], [Tab], [Semicolon], [Comma], [Space], [Other], [OtherChar], [FieldInfo], [TextVisualLayout], [DecimalSeparator], [ThousandsSeparator]) - открывает текстовый файл, содержащий таблицу, и создает рабочую книгу Excel, преобразуя текстовую таблицу в таблицу Excel. Это бывает важно, если таблицу, подготовленную в одном из текстовых редакторов, нужно импортировать в формат Excel. Обязательным параметром является имя файла, содержащего таблицу, подготовленную в текстовом редакторе. Остальные параметры задают характеристики таблицы. Конечно, для копирования таблицы, подготовленной в редакторе Word, проще использовать буфер и стандартную технику "Копировать" - "Вставить".

Объект Workbook

Рабочая книга Excel устроена проще, чем документ Word. Как и положено книге, она состоит из страниц (листов). В терминах объектов это означает, что объект Workbook имеет свойство Sheets, возвращающее объект Sheets - коллекцию листов рабочей книги. Поскольку рабочие книги Excel содержат листы разного типа, то наряду с коллекцией Sheets у объекта Workbook имеются свойства, возвращающие коллекции листов разного типа:

  • Worksheets - рабочих листов;
  • Charts - листы, содержащие диаграммы;
  • Excel4MacroSheets - листы с макросами одной из предыдущих версий Excel. Реально листы такого типа уже не встречаются. Поэтому и в документации они не всегда упоминаются. Я о них также больше говорить не буду. Здесь отдана дань прошлому, когда макросы располагались на листах рабочей книги. Сейчас все макросы находятся в модулях программного проекта.

Эти коллекции и составляют в совокупности коллекцию Sheets. Чаще всего приходится работать с каждой из этих коллекции в отдельности, но иногда полезно иметь возможность выполнять операции над всеми листами, независимо от их типа. С некоторым сожалением отмечу, что отсутствует класс Sheet, обобщающий свойства классов Workbook и Chart.

Теперь, когда состоялось первое знакомство с основными объектами, составляющими рабочую книгу, давайте перейдем к более систематическому обзору всех свойств- участников объекта Workbook.

Свойства-участники объекта Workbook

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

  1. Группа свойств, возвращающих основные объекты рабочей книги. К ним я отношу следующие свойства:
    • Sheets, Charts, WorkSheets, Excel4MacroSheets - все они возвращают объект класса Sheets, но в зависимости от свойства этот объект представляет либо всю коллекцию листов рабочей книги, либо ту ее часть, которая содержит листы типа, заданного именем свойства
    • ActiveSheet - возвращает объект класса Object, содержащий активный лист рабочей книги. Тип активного листа и определяет тип возвращаемого объекта.
    • ActiveChart - возвращает объект класса Chart - это может быть лист-диаграмма, если активный в момент вызова лист принадлежит этому типу, либо диаграмма, встроенная в активный рабочий лист, если и сама диаграмма на этом листе является в свою очередь активной. В противном случае при вызове свойства будет возвращен результат Nothing, свидетельствующий о том, что объект не найден.
  2. Группа свойств, возвращающих общие или схожие объекты. Это самая большая группа свойств объекта Workbook, что говорит о том, что общих черт у объекта Workbook больше чем специфических.
    • CommandBars - общий объект, возвращающий коллекцию инструментальных панелей приложений Office 2000.
    • VBProject - общий объект, описывающий программный проект приложений Office 2000. Необходим при программировании "на лету" - программной работе на VBA с программным проектом.
    • HMLProject - общий объект библиотеки Office, описывающий проект в формате HTML. Этот объект используется при программировании на VBScript.
    • WebOptions - объект, схожий во всех приложениях Office 2000, позволяющий задавать параметры Web-страниц. Действие большинства параметров распространяются на все приложения Office 2000.
    • Windows - коллекция окон, связанных с рабочей книгой. Особенностью документа Excel от документов других типов состоит в том, что документ Excel можно одновременно открыть в нескольких окнах, чтобы в каждом из них видеть требуемую часть рабочей книги. Сами же объекты Window схожи во всех приложениях. Эта коллекция является частью более общей коллекции окон, возвращаемой аналогичным свойством объекта Application.
    • RoutingSlip - объект, схожий для всех приложений Office 2000. Он определяет характеристики передачи рабочей книги по сети участникам, совместно работающим над данным документом. При работе с ним должно быть включено булево терминальное свойство HasRoutingSlip.
    • Styles - объект, схожий для приложений Office 2000 - определяет коллекцию применяемых для форматирования стилей. Есть набор встроенных стилей, но в коллекцию можно добавлять и собственные стили, задав в момент добавления соответствующие характеристики стиля - шрифт, размер, рамки и т.д. Обычно стили создаются руками, но, возможно и программное создание или изменение того или иного стиля.
    • BuiltinDocumentProperties, CustomDocumentProperties - оба эти свойства возвращают объект класса DocumentProperties из общей библиотеки Office. Этот класс определяет коллекцию свойств документов Office 2000. Эта коллекция напоминает коллекцию Sheets тем, что ее элементы могут относиться к различным типам. Свойство BuiltinDocumentProperties возвращает ту часть коллекции, которая задает стандартные свойства, заданные самим приложением, CustomDocumentProperties - свойства, определенные пользователем для конкретного документа. Свойства документов, являются схожими для всех приложений Office 2000. С двумя типами свойств работа идет по-разному. Коллекция стандартных свойств определена для каждого типа документа Office 2000, - добавлять или удалять элементы этой коллекции нельзя. В тоже время, коллекция пользовательских свойств изначально пуста и добавление или удаление свойств является основным способом работы с этой коллекцией. Большинство из стандартных свойств автоматически изменяют свои значения в процессе работы с документом, отражая, например, текущие характеристики документа - количество страниц, символов, дату последнего изменения и другие характеристики. Значения других стандартных свойств, также как и всех пользовательских свойств могут быть заданы пользователем или программно.
    • Mailer - схожий для всех приложений Office 2000 почтовый объект, используемый при работе на компьютерах Макинтош.
  3. К третьей группе относятся свойства, возвращающие объекты, специфические для рабочих книг Excel. К ним относятся:
    • Names - коллекция имен, которые даны отдельным областям листов рабочей книги. Типичной является ситуация, когда при работе с рабочей страницей, выделяется та или иная область, содержащая определенные данные, и этой области даются имена. При программировании очень часто приходится использовать имена таких объектов. Полагаю, что примеров в свое время будет достаточно. Напомню, что объект Application также имеет свойство Names, возвращающее коллекцию имен, включающую коллекции имен всех открытых рабочих книг.
    • PublishObjects - возвращает одноименную коллекцию, элементы которой принадлежат классу PublishObject. Эти объекты являются новинкой Excel 2000, они задают элементы рабочей книги, опубликованные на Web-странице. С их помощью можно вести обновление Web-страницы при изменениях состояния опубликованных объектов.
    • Container - объект, который содержит рабочую книгу. Типичным примером, когда рабочая книга может быть встроена в другой объект, и являться его частью, служит подшивка - объект Binder. Следует заметить, что в отличие от предыдущей версии подшивки пока не стали частью семейства Office 2000.
    • CustomViews - возвращает одноименную коллекцию, элементы которой задают образ той или иной части рабочей книги в том виде, как он виден на экране дисплея. Каждому такому образу дается свое имя. Ранее я говорил, что для того, чтобы увидеть ту или иную часть рабочей книги, используются окна. Custom View - это другая возможность задать коллекцию образов экрана, отражающих заданные части рабочей книги. В нижеследующем примере первая из приведенных процедур создает объект CustomView, сохраняющий текущий образ рабочей книги. Вторая процедура, которую можно вызвать в подходящий момент, позволяет показать на экране нужную часть рабочей книги в соответствии с сохраненным образом.
Public Sub AddCustView()
	'Добавить Custom View -	образ экрана,
	'отражающий текущий вид рабочей книги.
	ThisWorkbook.CustomViews.Add ("Две кнопки")
	Debug.Print ThisWorkbook.CustomViews.Count
	ThisWorkbook.CustomViews(1).Show
End Sub

Public Sub ShowCustView()
	'Показать Custom View -	вывести на экран,
	'заданный вид рабочей книги.
	Dim CW As CustomView
	If ThisWorkbook.CustomViews.Count > 0 Then
		For Each CW In ThisWorkbook.CustomViews
			If CW.Name = "Две кнопки" Then CW.Show
		Next CW
	End If
End Sub
Ольга Гафарова
Ольга Гафарова
Непонятен ход решения задачи
Серегй Лушников
Серегй Лушников
Может ли объект Recordset быть потомком объекта Record?
Геннадий Шестаков
Геннадий Шестаков
Беларусь, Орша
Светлана Ведяева
Светлана Ведяева
Россия, Саратов