Excel workbook что это
В иерархии Excel объект workbook (рабочая книга) идет сразу после объекта Application и представляет файл рабочей книги. Рабочая книга хранится либо в файлах формата XLS (стандартная рабочая книга) или XLA (полностью откомпилированное приложение). Свойства и методы рабочей книги позволяют работать с файлами.
Свойства объекта Workbook и семейства Workbooks
Выполняемые действия и допустимые значения
Например выводит в диалоговом окне имя активного рабочего листа
MsgBox «Имя активного листа» & ActiveSheet. Name
True (если у документа имеется пароль защиты)
True (если документ закрыт для записи)
True (если не производились изменения в документе со времени его последнего сохранения)
- xlNoMailSystem (не установлена система электронной почты)
- xlMAPi (установлена система Microsoft Mail)
- xlPowerTalk (установлена система Apple PowerTalk Mail, на компьютерах Macintosh).
If Application. MailSystem <> xlMAPI Then
MsgBox «Microsoft Mail неинсталлирован»
Методы объекта Workbook и семейства Workbooks
Активизирует рабочую книгу так, что ее первый рабочий лист становится активным.
Создает новый объект для семейства Workbooks.
Защищает рабочую книгу от внесения в нее изменений.
Protect (Password, Structure, Windows)
- Password — строка, используемая в качестве пароля для защиты книги
- Structure — допустимые значения True (защищена структура книги, т. е. взаимное расположение листов) и False (не защищена)
- windows — допустимые значения True (защищено окно книги) и False (не защищено)
В следующем примере устанавливается защита для активной рабочей книги:
Снятие защиты с рабочей книги.
Password — строка, используемая в качестве пароля для защиты листа
В следующем примере снимается защита с активной рабочей книги:
Сохранение рабочей книги в другом файле.
Filename — строка, указывающая имя файла, в котором будет сохранена рабочая книга
В следующем примере активная рабочая книга сохраняется в файле с именем НоваяВерсия:
Сохранить рабочую книгу в другом файле, оставляя рабочую книгу в памяти с прежним именем.
SaveAs (Filename, FileFormat)
Filename — строка, указывающая имя файла, в котором будет сохранена рабочая книга
В следующем примере активная рабочая книга сохраняется в файле с именем ЗапаснаяВерсия:
Отсылка почты используя встроенные средства Microsoft Mail (MAPI).
SendMail (Recipients, Subject, ReturnReceipt)
В следующем примере рабочая книга отсылается по электронной почте получателю Порфирию Заковыркину:
Следующий по иерархии после Application объект в объектной модели Excel — это объект Workbook, который представляет книгу Excel. Можно сказать, что объект Workbook занимает в Excel примерно то же место, что и объект Document в Word — он нужен для получения ссылки на нужную нам книгу в наборе открытых книг Excel, а также для настройки общих свойств и выполнения общих действий со всеми листами книги. Получить этот объект можно очень просто:
- первый способ — воспользоваться коллекцией Workbooks, которая доступна через свойство Workbooks объекта Application. Впрочем, применять это свойство совершенно не обязательно — коллекция Workbooks в Excel и так постоянно доступна. Найти нужную книгу в этой коллекции можно по ее имени или номеру в коллекции:
- второй способ — использовать свойство Application.ActiveWorkbook. При помощи этого свойства мы обращаемся к активной в настоящей момент книге:
- третий способ — использовать свойство Application.ThisWorkbook. При этом мы обращаемся к той книге, которой принадлежит данный программный модуль:
На практике чаще всего нам нужно либо создать в Excel новую книгу, либо открыть существующую книгу (или другой файл в формате, который понимает Excel, например, DBF). Для этой цели используются методы Add() и Open() соответственно. Например, создать новую книгу в Excel можно так:
Dim oWbk As Workbook
Set oWbk = Workbooks.Add()
Единственный необязательный параметр, который принимает этот метод — имя шаблона, на основе которого создается новая рабочая книга.
Открытие существующей книги выглядит так:
Dim oWbk As Workbook
Set oWbk = WorkBooks.Open("C:\mybook1.xls")
Помимо стандартных, в коллекции Workbooks предусмотрено также три специальных метода:
- OpenDatabase() — открыть базу данных, выполнить к ней запрос (или открыть таблицу/представление напрямую), а результаты запроса поместить как импортированные внешние данные в новую автоматически созданную рабочую книгу Excel;
- OpenText() — почти то же самое, но в качестве источника здесь выступает текстовый файл. Дополнительные параметры позволяют определять его формат.
- OpenXML() — в качестве источника данных будет выступать файл в формате XML.
Как и метод InsertDatabase() в Word, эти методы следует использовать только в самых простых случаях. Рекомендуется по возможности использовать более мощные и стандартные средства объектной модели ADO.
Теперь о самых важных свойствах объекта Workbook — самой рабочей книги:
- Name, CodeName, FullName — разные имена этой книги. Самое простое имя — Name, это имя совпадает с именем файла книги. FullName — это имя файла книги вместе с полным путем к нему в операционной системе. CodeName — как эта книга будет называться в коде. CodeName можно посмотреть в окне Project Explorer или, если открыть свойства книги в окне Properties, кодовое имя книги будет представлено в строке (Name). Все три свойства доступны только для чтения, менять их можно другими способами (например, сохраняя файл под другим именем или прямо в окне Properties).
Определенное отношение к именам имеет также свойство Path (путь к файлу книги) .
- Charts, Sheets, ActiveChart, ActiveSheet, CustomViews, BuiltinDocumentProperties и CustomDocumentProperties, Windows, WebOptions возвращают одноименные коллекции соответствующих объектов. Некоторые из этих объектов будут рассматриваться ниже.
- ConflictResolution — как будут разрешаться конфликты изменения данных, если книга открыта несколькими пользователями сразу (shared workbook). Есть возможность сделать так, чтобы локальный пользователь автоматически выигрывал, автоматически проигрывал или возникало диалоговое окно с возможностью разобраться в конфликте вручную. Существует большое количество свойств, которые позволяют настроить параметры совместной работы с книгой, но по причине того, что такая работа не рекомендуется (данные для совместного доступа необходимо переносить в базу данных), рассматриваться они здесь не будут, за исключением:
- запрещать/разрешать общий доступ к рабочей книге можно при помощи методов SaveAs() или ExclusiveAccess();
- по умолчанию возможность совместного редактирования для книги отключена (проверить можно при помощи свойства MultiUserEditing);
- получить список всех пользователей (а также когда они открыли файл и в каком режиме) можно при помощи свойства UserStatus.
For Each Item In ThisWorkbook.Names
Это свойство удобно использовать для предварительных проверок для устранения потенциальных ошибок времени выполнения.
Методов у объекта Workbook также очень много, однако значения самых употребимых — Activate(), Close(), Save(), SaveAs(), PrintOut(), Protect() и Unprotect() очевидны и действуют аналогично одноименным методам объекта Document в Word.
Комментарии
Свойства
Представляет экземпляр Excel, содержащий эту книгу.
Указывает, находится ли книга в режиме AutoSave.
Представляет коллекцию привязок, включенных в книгу.
Возвращает номер версии модуля вычислений Excel.
Значение true, если все диаграммы в книге отслеживают точки фактических данных, с которыми они связаны. False, если диаграммы отслеживают индекс точек данных.
Представляет коллекцию комментариев, связанных с книгой.
Контекст запроса, связанный с объектом. Это связывает процесс надстройки с процессом Office хост-приложения.
Представляет коллекцию пользовательских частей XML, содержащихся в этой книге.
Представляет все подключения к данным в книге.
Представляет коллекцию функций таблицы, которые можно использовать для вычислений.
Указывает, были ли внесены изменения с момента последнего сберегаемого книги. Вы можете настроить это свойство, если вы хотите закрыть измененную книгу без ее сохранения или true запроса на ее сохранение.
Возвращает коллекцию связанных типов данных, которые являются частью книги.
Возвращает коллекцию связанных книг. В формулах ссылки на книги можно использовать для ссылок на данные (значения ячейки и имена) за пределами текущей книги.
Получает имя книги.
Представляет коллекцию именных элементов с именами книг (именуемого диапазона и констант).
Представляет коллекцию сводных таблиц, сопоставленных с книгой.
Представляет коллекцию объектов PivotTableStyles, связанных с книгой.
Указывает, была ли книга сохранена локально или в Интернете.
Получает свойства книги.
Возвращает объект защиты для книги.
Возвращает коллекцию запросов Power Query, которые являются частью книги.
true Возвращается, если книга открыта в режиме только для чтения.
Представляет коллекцию параметров, связанных с книгой.
Указывает, отображается ли область списка полей PivotTable на уровне книги.
Представляет коллекцию срезов, связанных с книгой.
Представляет коллекцию объектов SlicerStyles, связанных с книгой.
Представляет коллекцию стилей, связанных с книгой.
Представляет коллекцию таблиц, сопоставленных с книгой.
Представляет коллекцию объектов TableStyles, связанных с книгой.
Возвращает коллекцию задач, присутствующих в книге.
Представляет коллекцию объектов TimelineStyles, связанных с книгой.
Значение true, если в книге используется система дат 1904.
Значение true, если вычисления в книге выполняются только с той точностью чисел, с которой они отображаются. Данные будут постоянно терять точность при переходе этого свойства false из true .
Представляет коллекцию листов, сопоставленных с книгой.
Методы
Закрывает текущую книгу.
Закрывает текущую книгу.
Получает текущую активную ячейку из книги.
Получает текущую активную диаграмму в книге. Если нет активной диаграммы, ItemNotFound будет отброшено исключение.
Получает текущую активную диаграмму в книге. Если нет активной диаграммы, эта функция возвращает объект с его isNullObject свойством true . Дополнительные сведения см. в методе и свойствах *OrNullObject .
Получает текущий активный срез в книге. Если активного среза нет, ItemNotFound выброшено исключение.
Получает текущий активный срез в книге. Если нет активного среза, эта функция возвращает объект с его isNullObject свойством true . Дополнительные сведения см. в методе и свойствах *OrNullObject .
true Возвращается, если книга редактирована несколькими пользователями (с помощью соавторов). Обратите внимание, что может возникнуть задержка между изменением состояния книги и отражением изменений в результате метода.
Получает выбранный в настоящее время отдельный диапазон из книги. Если выбрано несколько диапазонов, этот метод выкинуть ошибку.
Получает текущий выделенный диапазон (один или несколько) в книге. В отличие от getSelectedRange() , этот метод возвращает RangeAreas объект, который представляет все выбранные диапазоны.
Вставляет указанные таблицы из источника книги в текущую книгу.
Примечание*: В настоящее время этот API поддерживается только для Office на Windows, Mac и в Интернете.
Добавляет в очередь команду для загрузки указанных свойств объекта. Перед чтением свойств требуется вызвать метод context.sync() .
Добавляет в очередь команду для загрузки указанных свойств объекта. Перед чтением свойств требуется вызвать метод context.sync() .
Добавляет в очередь команду для загрузки указанных свойств объекта. Перед чтением свойств требуется вызвать метод context.sync() .
Сохраняет текущую книгу.
Сохраняет текущую книгу.
Задает несколько свойств объекта одновременно. Можно передать либо обычный объект с соответствующими свойствами, либо другой объект API того же типа.
Задает несколько свойств на объекте одновременно на основе существующего загруженного объекта.
Переопределяет метод JavaScript, чтобы обеспечить более полезный выход, когда объект toJSON() API передается JSON.stringify() . ( JSON.stringify , в свою очередь, вызывает метод объекта, который toJSON передается ему.) В то время как исходный Excel. Объект книги — это объект API, метод возвращает обычный toJSON объект JavaScript (введите как Excel.Interfaces.WorkbookData ), содержащий неглубокие копии любых загруженных свойств ребенка из исходного объекта.
События
Возникает при активации книги. Примечание. Это событие не будет открываться при открываемой книге.
В Word ниже объекта Application и Document начинались уже объекты непосредственно для работы с текстом — Selection, Range и т.п. В Excel между объектом рабочей книги и ячейками есть еще один промежуточный объект — объект Worksheet (лист). Объекты Worksheet в книге объединены в коллекцию Sheets.
Чаще всего для ввода данных в Excel (напрямую или из базы данных) нам потребуется в первую очередь определиться с листом, на который пойдет ввод данных — либо просто выбрать его, либо вначале создать, а потом выбрать.
Процесс создания выглядит очень просто:
Dim oExcel As New Excel.Application 'Запускаем Excel
oExcel.Visible = True 'Делаем его видимым
Dim oWbk As Excel.Workbook
Set oWbk = oExcel.Workbooks.Add () 'Создаем новую книгу
Dim oSheet As Excel.Worksheet
Set oSheet = oWbk.Worksheets.Add() ' Создаем новый лист
oSheet.Name = "Новый лист" 'Присваиваем ему имя "Новый лист"
Метод Add() для коллекции Worksheets принимает несколько необязательных параметров, главная задача которых — определить, между какими существующими листами будет вставлен новый лист. Если ничего не указывать, то новый лист будет помещен самым первым.
Часто встречается и другая задача — просто найти нужный лист среди листов книги, например, если мы открыли существующую книгу. Сделать это очень просто, поскольку коллекция Worksheets умеет работать с именами листов. Ниже приведен пример, в котором мы так же запускаем Excel и создаем новую книгу, но при этом находим лист с именем "Лист1" и переименовываем его в "Новый лист":
Dim oExcel As New Excel.Application 'Запускаем Excel
oExcel.Visible = True 'Делаем его видимым
Dim oWbk As Excel.Workbook
Set oWbk = oExcel.Workbooks.Add() 'Создаем новую книгу
Dim oSheet As Excel.Worksheet
Set oSheet = oWbk.Worksheets.Item("Лист 1") ' Находим Лист1
oSheet.Name = "Новый лист" 'Присваиваем ему имя "Новый лист"
Обратите внимание, что в английской версии Excel этот код, скорее всего, не пройдет, поскольку листы там по умолчанию называются "Sheet1", "Sheet2" и т.п. Если вы в вашем коде используете имена листов по умолчанию и при этом вашей программе придется работать на компьютерах с разноязычными версиями Excel, обязательно предусмотрите дополнительные проверки или просто используйте номера листов вместо их имен.
У коллекции Sheets, помимо привычных нам свойств и методов ( Count, Item, Add(), Delete()) и свойств и методов, которые удобнее применять для объекта Worksheet ( Visible(), Copy(), Move(), PrintOut(), PrintPreview(), Select()) — поскольку все равно указывать конкретный лист — есть и один специфический метод FillAcrossSheets() — скопировать объект диапазона Range (варианты: полностью, только содержимое, только оформление) во все листы данной книги.
У объекта Worksheet — множество важных свойств и методов:
- Cells — одно из наиболее часто используемых свойств объекта Worksheet. Работает точно так же, как и рассмотренное выше одноименное свойство объекта Application — за исключением того, что вам больше не нужно ограничиваться только активным листом. Аналогично работают свойства Columns и Rows.
- EnableCalculation — возможность отключить автоматический пересчет значений ячеек в книге.
- EnableSelection — возможность запретить выделять на листе: все, ничего не запрещать, или разрешить выделять только незаблокированные ячейки.
- Next — возможность получить ссылку на следующий лист в книге. Previous — то же самое для предыдущего листа.
- PageSetup — как и в Word, возможность получить объект PageSetup, при помощи которого можно настроить те же параметры, что и через меню Файл -> Параметры страницы.
- свойство Protection позволяет получить объект Protection, при помощи которого можно запретить пользователю вносить изменения в лист Excel. Настройке параметров защиты также служат и другие свойства, названия которых начинаются на Protection.
- QueryTables — исключительно важное свойство. Оно возвращает коллекцию QueryTables — набор объектов QueryTable, которые, в свою очередь, представляют данные, полученные из внешних источников (как правило, из баз данных).
- Range — самое важное свойство объекта Worksheet. Возвращает объект Range (диапазон ячеек), который в объектной модели Excel занимает примерно такое же место, что и одноименный объект в объектной модели Word. Этот объект будет рассматриваться ниже.
- Type — возможность определить тип данного листа. Обычно используются два типа: xlWorksheet (обычный лист) и xlChart (диаграмма).
- UsedRange — возвращает объект Range, представляющий собой прямоугольную область, включающую все непустые ячейки. Удобно для целей копирования или форматирования.
- Visible — возможность спрятать лист с глаз пользователя (например, если он используется для служебных целей).
Некоторые важные методы объекта Worksheet:
- методы Activate() , Calculate(), Copy(), Paste(), Delete(), Move(), Evaluate(), Select(), SaveAs(), PrintOut(), PrintPreview(), Protect(), Unprotect()нам уже знакомы . Отличие заключается только в том, что теперь эти методы могут применяться для выбранного вами листа.
- метод PivotTables() возвращает коллекцию очень интересных объектов PivotTable (сводная таблица), которые будут рассматриваться ниже;
- метод Scenarios() возвращает коллекцию Scenarios, состоящую из объектов Scenario (сценарии). Сценарии — это именованные наборы вводных данных, которые можно использовать для проверки различных сценариев (разные суммы продаж, уровни налогов, расходов и т.п.)
- SetBackgroundPicture() — возможность назначить листу фоновое изображение (естественно, желательно, чтобы оно было полупрозрачное — "водяной знак", иначе на его фоне будет трудно читать текст в ячейках).
- ShowAllData() — показать все скрытые и отфильтрованные данные на листе.
Самое важное событие объекта Worksheet — это, конечно, Change. Существует множество практических задач, когда изменение пользователем значения ячейки должно приводить к изменению значения в ячейке другого листа/рабочей книги Excel или даже в базе данных. Другая ситуация, в которой используется это события — сложная проверка вводимого пользователем значения (например, опять-таки через обращение к базе данных). Эта событийная процедура работает со специальным параметром Target — то есть объектом Range, представляющим изменившуюся ячейку. При помощи свойств и методов объекта Range вы можете получить информацию об изменившемся значении, столбце и строке, в котором произошло изменение и т.п.
Читайте также: