Excel application свойства и методы
Многие свойства, методы и события объекта Excel.Application совпадают с аналогичными в Word.Application. Однако поскольку информация приводится здесь для справки для тех пользователей, которым трудно свободно читать по английски, здесь будут приведены наиболее часто используемые свойства и метода объекта Application в Excel, вне зависимости от того, встречались ли они нам в Word, или нет.
Вначале — о свойствах объекта Application:
- свойства Active… возвращают соответственно активную ячейку (ту, на которую указывает курсор ввода данных), активную диаграмму, активный лист, активную книгу, активное окно. Все эти свойства доступны только для чтения. Собственно говоря, использовать их для создания объектов совсем не обязательно — объекты ActiveCell, ActiveSheet и т.п. создаются автоматически во время работы приложения и доступны всегда. Немного отличается свойство ActivePrinter — оно позволяет не только вернуть, но и установить активный принтер.
- свойство AddIns возвращает одноименную коллекцию надстроек (объектов AddIn). В отличие от Word, где в большинстве случаев применение надстроек предназначено для профессиональных программистов, в Excel работа с этим объектом имеет практическое значение для многих пользователей. Вместе с Excel поставляется несколько очень полезных надстроек (на графическом экране в Excel они доступны через меню Сервис ->Надстройки), например, Мастер подстановок, Пакет анализа, Поиск решения и т.п. При помощи этой коллекции можно проверять, подключена ли пользователем нужная надстройка (если она нужна вашей программе) и в случае необходимости автоматически ее подключить.
- AutoRecover — возвращает одноименный объект, который позволяет определить параметры автосохранения Excel. Например, чтобы открытые документы Excel автосохранялись каждые 5 минут, можно использовать код
Время указывается в минутах, можно использовать значения в интервале от 1 до 120. На графическом экране тоже самое можно сделать при помощи меню Сервис -> Параметры -> вкладка Сохранение.
- свойство Calculation позволяет определить или узнать режим пересчета рабочей книги (по умолчанию — автоматически, можно также использовать ручной пересчет или полуавтоматический, когда автоматически пересчитывается все, кроме таблиц). Есть смысл отключать автоматический пересчет тогда, когда пересчет значений после каждого изменения ячейки занимает много времени и мешает вводу данных. То же самое на графическом экране можно настроить при помощи меню Сервис ->Параметры -> вкладка Вычисления (явно дать команду на пересчет можно клавишей ).
- свойство CalculationState позволяет проверять, занимается ли Excel пересчетом данных или пересчет уже завершен.
- Cells — одно из самых важных свойств объекта Application. Оно возвращает объект Range, представляющий все ячейки в активном листе активной книги. Поскольку свойство по умолчанию для объекта Range — это свойство Item, то обращение к ячейкам активного листа может выглядеть так:
В данном случае мы выделили полужирным ячейку на пересечении первой строки и второго столбца.
- Очень похоже действуют свойства Columns и Rows. Например, чтобы проделать подобную операцию с целым столбцом (вторым), можно использовать команду вида
а для строки (второй) можно воспользоваться очень похожей командой
Еще раз отметим, что свойства Cells, Columns и Rows возвращают вовсе не наборы объектов Cell, Column и Row, как считают многие пользователи, а наборы объектов Range. На использовании объекта Range построена в Excel почти вся работа с ячейками и их значениями. Ниже в этой главе объекту Range будет посвящен отдельный раздел.
- Cursor — это свойство позволяет поменять внешний вид указателя мыши в Excel (у объекта Application в Word этого свойства почему-то нет). Обычно перед выполнением длинной расчетной операции курсору придают вид песочных часов ( xlWait), а потом возвращают обратно. Автоматически по завершению работы макроса курсор не возвращается к нормальному виду — нужно предусмотреть соответствующий код.
- DataEntryMode — очень интересное свойство, которое может уберечь пользователя от множества ошибок. Оно позволяет перейти в режим ввода данных — data entry mode, когда пользователю разрешается только вводить данные в разблокированные ячейки выбранного диапазона. Всего в вашем распоряжении три варианта: xlOn — включить этот режим, xlStrict — включить плюс сделать так, чтобы пользователь не мог из него выйти при помощи клавиши , xlOff — режим отключить.
- свойства DecimalSeparator и ThousandsSeparator позволяют не полагаться на региональные настройки на компьютере пользователя, а явно назначить символы, которые будут отделять дробную часть от целой и тысячи друг от друга. При использовании этих свойств рекомендуется также отключить использование системных установок при помощи свойства UseSystemSeparators:
- свойство Dialogs возвращает одноименную коллекцию Dialog, которую можно использовать для отображения диалоговых окон Excel (их предусмотрено несколько сотен) и определять реакцию на действия в них пользователей. Фактически поднабором для этого объекта является объект FileDialog, представляющий окна, предназначенные только для работы с файлами (например, окно открытия файла). Работа с ними выглядит точно так же, как в Word.
- DisplayAlerts — свойство, про которое мы уже говорили в модуле про Word, но по причине его большой важности повторим еще раз. Это свойство позволяет отключить показ различных предупреждений, которые пользователю обычно в ходе работы приложения показывать не надо (например, подавить предупреждение при закрытии ненужного файла, в котором не были сохранены изменения).
- EnableEvents — возможность на время отключить события для объекта Application, так что они срабатывать не будут (обычно перед выполнением какого-то действия — открытия файла, сохранения и т.п.).
- ErrorCheckingOptions — возможность получить ссылку на одноименный объект, при помощи свойств которого можно настроить параметры автопроверки Excel (сообщать ли пользователю о синтаксически неверных формулах, ссылках на пустые ячейки и т.п.). По умолчанию большинство проверок включено, поэтому к этому объекту есть смысл обращаться только тогда, когда вы хотите их отменить.
- FileDialog — возможность обратиться к диалоговым окнам открытия и сохранения файлов (то же самое можно сделать при помощи более общего свойства Dialogs). Например, чтобы предоставить пользователю выбрать единственный файл в окне открытия (и получить полный путь к нему), можно воспользоваться кодом
Похожий пример с возможностью выбрать сразу несколько файлов приведен в справке по этому свойству.
- FileSearch — это свойство позволяет провести поиск по указанному вами каталогу и вывести результаты.
- Interactive — это свойство позволяет полностью заблокировать ввод в приложение Excel со стороны пользователя (как клавиатуру, так и мышь). Обычно используется, чтобы пользователь не смог помешать работе приложения, например, сбить выделение. Можно также использовать, если ввод пользователя производится из другого приложения, взаимодействующего с Excel.
- свойства International и LanguageSettings работают точно так же, как и в Word.
- свойство LibraryPath возвращает путь к каталогу, где лежат файлы надстроек Excel — XLA. По умолчанию — \Office11\Library.
- свойство MoveAfterReturn позволяет включить/отключить переход на следующую ячейку после завершения ввода данных и нажатия на (по умолчанию — включено), а свойство MoveAfterReturnDirection позволяет определить направление перехода. В некоторых ситуациях это может сильно упростить ввод данных пользователем. Например, чтобы переход происходил на ячейку справа, можно использовать команду
- свойство Names позволяет вернуть коллекцию Names, представляющую все именованные диапазоны в активной рабочей книге. При помощи метода Add() коллекции Names вы можете также сами определять в рабочей книге свои именованные диапазоны. На практике именованные диапазоны работают примерно так же, как закладки в Word — при помощи их очень удобно определять наборы данных в сложных таблицах Excel. На графическом экране в Excel определить именованные диапазоны можно при помощи меню Вставка ->Имя.
- свойства ODBCErrors и OLEDBErrors позволяют получать информацию о возникших ошибках при подключении к базам данных ODBC и OLEDB соответственно. Реально они возвращают одноименные коллекции, которые состоят из объектов ODBCError и OLEDBError соответственно, их которых и можно получить информацию об ошибке.
- OnWindow — это свойство больше похоже на событие. В качестве его значения указывается имя процедуры, которая должна находиться в модуле уровня книги (по умолчанию такой модуль не создается — его нужно создать вручную). Эта процедура будет вызываться всякий раз, когда пользователь переключился в окно Excel (не важно, какой книги и какого листа). Вместо этого свойства можно использовать макросы со специальными именами Auto_Activate и Auto_Deactivate (они будут срабатывать после выполнения процедуры, определенной в OnWindow).
- Range — очень важное свойство. Возвращает объект Range, который представляет собой диапазон ячеек и используется в Excel практически для любых операций с ячейками.
- ReferenceStyle — возможность переключить режим отображения ячеек между A1 (буквы — столбцы, цифры — строки) и R1C1 (когда и строки, и столбцы указываются цифрами). На графическом экране это можно сделать через меню Сервис ->Параметры -> вкладка Общие, флажок стиль ссылок R1C1. На практике пользователям ближе стиль вида A1, а программистам, конечно, R1C1 (особенно в тех ситуациях, когда столбцов очень много и приходится использовать столбцы AA, AB и т.п.). Во многих ситуациях удобно бывает перед выполнением какой-то программной операции вначале перевести режим отображения в R1C1, а после окончания на радость пользователям вернуть обратно. Можно этим и не заниматься, а использовать другие способы для отсчета определенного количества столбцов.
- Selection — как несложно догадаться, это свойство возвращает то, что в настоящий момент выбрал пользователь. Если он выбрал обычные ячейки в таблице, то вернется объект Range. Если же пользователь выбрал что-то на диаграмме, то может вернуться объект осей, легенды и т.п. — в зависимости от того, что было выбрано. В отличие от Word, объект Selection в Excel используется очень редко.
- Sheets — это свойство мы будем подробнее разбирать в разделе, посвященном книгам Excel. Оно возвращает коллекцию Sheets — набор листов книги (если вызывается для приложения, то для активной книги) и набор диаграмм, которые находятся на отдельных листах. Если используется свойство Worksheets, то вернется та же коллекция Sheets, но уже состоящая только из объектов Worksheet — обычных листов (без диаграмм).
- TemplatesPath — свойство для чтения, при помощи которого можно вернуть информацию о каталоге с шаблонами Excel (например, для размещения собственного шаблона или открытия шаблона из этого каталога). По умолчанию используется каталог Application Data\Microsoft\Templates в профиле пользователя.
- ThisCell и ThisWorkbook — очень удобные свойства, которые позволяют обращаться к текущей ячейке и текущей книге, не обременяя себя созданием объектных переменных. Эти объекты создавать не нужно — они и так изначально существуют в работающем Excel.
- Свойства Windows, Workbooks и Sheets возвращают, соответственно, все открытые окна, книги и листы Excel. Про объекты рабочей книги и листа мы будем говорить ниже.
- Свойство WorkSheetFunction позволяет использовать в программе на VBA функции Excel напрямую, без необходимости прописывать их в какую-либо ячейку.
Самые важные методы объекта Excel.Application перечислены ниже:
- ActivateMicrosoftApp() — специальный метод, который предназначен для запуска и активизации (или просто активизации, если приложение уже запущено) приложений Office (Word, Access, PowerPoint) и некоторых других (Project, FoxPro, Schedule Plus).
- AddCustomList() — возможность создать новый пользовательский список. В качестве параметра принимает либо объект Range (элементами списка станут те значения, которые есть в диапазоне), либо просто стандартный объект Array. Удалить можно при помощи метода DeleteCustomList().
- методы, которые начинаются на Calculate…, позволяют пересчитать значения в ячейках. Просто Calculate() — обычный пересчет значений (чаще всего нужен, если автопересчет отключен), CalculateFull() — пересчитать значения во всех открытых книга, CalculateFullRebuild() — еще и произвести перестроение формул (аналогично занесению всех формул заново). Остановить пересчет можно при помощи метода CheckAbort().
- ConvertFormula() — возможность преобразовать формулу двумя способами: либо перевести адресацию ячеек в другой режим (например, вместо A1 в R1C1), либо поменять абсолютные ссылки на относительные и наоборот. В качестве параметра принимает строковую переменную с текстом формулы (должна начинаться с символа =) и флаги конвертации.
- DoubleClick() — эквивалентно двойному щелчку мышью по активной ячейки, то есть переход в режим ввода данных в эту ячейку.
- Evaluate() — очень полезный и часто используемый метод. Позволяет по имени найти объект книги Excel и преобразовать его в объект или значения для дальнейшего использования. В качестве имен этот метод принимает:
- имена ячеек в стиле A1 (возвращается объект Cell)
- имена диапазонов (возвращается объект Range)
- имена, определенные в макросе (чаще всего — названия переменных)
- ссылки на внешние книги (например, Evaluate("[Book1.xls]Sheet1!A5"))
Эту функцию можно вызвать и неявно — просто заключив имя объекта в квадратные скобки. Например, такие строки будут абсолютно одинаковыми по значению:
Поскольку синтаксис с квадратными скобками короче, чаще всего используется именно он.
Таким образом, метод Evaluate() — это самый простой и естественный метод обратиться к ячейке или диапазону в своей или чужой книге Excel.
Для разработки решений, использующих Microsoft Office Excel, необходимо взаимодействие с объектами, предоставляемыми объектной моделью Excel. В этом разделе представлены наиболее важные объекты:
Применимо к: Сведения в этом разделе применимы к - проектам уровня документа и к добавлению VSTO - в проектах для Excel. Дополнительные сведения см. в разделе доступность функций по типам приложений Office и проектов.
Интересуетесь разработкой решений, расширяющих возможности Office на нескольких платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office имеют небольшой объем по сравнению с надстройками и решениями VSTO, и их можно создавать с помощью практически любой технологии веб-программирования, такой как HTML5, JavaScript, CSS3 и XML.
Объектная модель точно соответствует пользовательскому интерфейсу. Объект Application представляет приложение в целом, а каждый из объектов Workbook содержит коллекцию объектов Worksheet . Отсюда следует, что основная абстракция, представляющая ячейки, является объектом Range, позволяющим работать с отдельными ячейками или группой ячеек.
помимо Excel объектной модели Office проекты в Visual Studio предоставляют ведущие элементы и элементы управления ведущего приложения , расширяющие некоторые объекты в объектной модели Excel. Поведение ведущих элементов и элементов управления ведущего приложения аналогично поведению объектов Excel, однако они обладают дополнительными функциональными возможностями, такими как возможность привязки данных и дополнительные события. дополнительные сведения см. в разделе автоматизация Excel с помощью расширенных объектов , ведущих элементов и общих сведений об элементах управления ведущего приложения.
В этом разделе приводится краткий обзор объектной модели Excel. дополнительные сведения о всей модели объектов Excel см. в статье использование Excel объектной модели.
доступ к объектам в проекте Excel
при создании нового VSTO проекта надстройки для Excel Visual Studio автоматически создает файл кода thisaddin. vb или thisaddin. cs . Доступ к объекту приложения можно получить с помощью свойства Me.Application или this.Application .
При создании нового проекта уровня документа для Excel можно создать новый проект книги Excel или шаблона Excel. Visual Studio автоматически создает в новом проекте Excel (как для проектов книги, так и для проектов шаблона) следующие файлы кода:
Класс Globals в проекте можно использовать для получения доступа к объекту ThisWorkbook , Sheet1 , Sheet2 или Sheet3 вне соответствующего класса. дополнительные сведения см. в разделе глобальный доступ к объектам в Office проектах. В следующем примере вызывается PrintPreview метод независимо от того, Sheet1 помещается ли код в один из классов Sheet n или ThisWorkbook класса.
Поскольку данные в документе Excel хорошо структурированы, объектная модель имеет прямую иерархическую структуру. Excel предоставляет сотни объектов, с которыми вы можете взаимодействовать, но можно получить хорошее начало работы с объектной моделью, посвященной небольшому подмножеству доступных объектов. К числу этих объектов относятся следующие четыре:
С этими четырьмя объектами и их составляющими связана большая часть работы в Excel.
Объект приложения
Объект Excel Application представляет само приложение Excel. Объект Application представляет множество сведений о выполняемом приложении, параметрах соответствующего экземпляра и текущих объектах пользователя, открытых в экземпляре.
Не устанавливайте для свойства EnableEvents объекта Application в Excel значение false. Установка значения false для этого свойства предотвращает инициирование событий в Excel, включая события элементов управления ведущего приложения.
Объект книги
Объект Workbook представляет отдельную книгу в приложении Excel.
Средства разработки Office в Visual Studio расширяют объект Workbook , предоставляя тип Workbook . Данный тип обеспечивает доступ ко всем функциям объекта Workbook. Дополнительные сведения см. в разделе ведущий элемент книги.
Worksheet - объект
Объект Worksheet является членом коллекции Worksheets. Многие свойства, методы и события объекта Worksheet идентичны или похожи на элементы, предоставляемые объектами Application или Workbook.
Excel предоставляет коллекцию Sheets как свойство объекта Workbook. Каждый член коллекции Sheets является объектом Worksheet или Chart.
Средства разработки Office в Visual Studio расширяют объект Worksheet , предоставляя тип Worksheet . Этот тип предоставляет доступ ко всем возможностям объекта Worksheet, а также к новым возможностям, таким как возможность размещения управляемых элементов управления и обработки новых событий. Дополнительные сведения см. в разделе ведущий элемент листа.
Range - объект
Объект Range является объектом, который используется в приложениях Excel чаще всего. Для работы с какой-либо областью Excel ее необходимо указать в качестве объекта Range, а затем использовать методы и свойства этого диапазона. Объект Range может представлять ячейку, строку или столбец, выборку ячеек, содержащую один или несколько смежных или несмежных блоков ячеек, или даже группу ячеек, распределенную между разными листами.
Visual Studio расширяет объект Range, предоставляя типы NamedRange и XmlMappedRange. Эти типы обладают большинством функций объекта Range, а также новыми функциями, такими как возможность привязки данных и новые события. Дополнительные сведения см. в разделе NamedRange Control and XmlMappedRange Control.
использование документации по объектной модели Excel
Полные сведения об объектной модели Excel см. в справочнике по основной сборке взаимодействия (PIA) Excel и в справочнике по объектной модели VBA.
Ссылка на основную сборку взаимодействия
В справочной документации по основной сборке взаимодействия Excel описываются типы основной сборки взаимодействия для Excel. эта документация доступна по следующему адресу: Excel 2010 основная ссылка на сборку взаимодействия.
дополнительные сведения о проектировании Excel pia, например о различиях между классами и интерфейсами в pia и о том, как реализуются события в pia, см. в разделе общие сведения о классах и интерфейсах в Office основных сборках взаимодействия.
Справочник по объектной модели VBA
В справочных документах по объектной модели VBA объектная модель Excel описана в том виде, в котором она предоставляется коду Visual Basic для приложений. дополнительные сведения см. в разделе справочник по объектной модели Excel 2010.
Программист, работающий в Excel, должен свободно ориентироваться в мире его объектов. Мощь офисного программирования определяется тем, что изначально в распоряжении программиста находится большое число уже готовых объектов. Чтобы с толком распорядиться предоставляемыми возможностями, объекты нужно знать.
Если сравнить каркас рабочей книги Excel, например, с каркасом документа Word, то они отличаются тем, что в основе одного лежит библиотека Excel, в основе другого - библиотека Word. Эти библиотеки содержат специфические для данных приложений объекты. Что же касается интерфейсных объектов, объектов определяющих среду редактора VBA, автоматизацию, то здесь используются общие объекты. Библиотеки Office, Stdole, VBA - это общие для всех приложений Office 2000 библиотеки.
Замечу, что хотя каркас документа Excel не изменился в Office 2000 в сравнении с предыдущей версией, вместе с тем в объектной модели произошли довольно существенные изменения, появились новые объекты, новые свойства и методы у ранее существовавших объектов.
Объектная модель Excel
Прежде всего, несколько слов о том, как устроена объектная модель Excel и других приложений Office 2000. В этой модели объекты связаны между собой отношением встраивания. На нулевом уровне иерархии существует некоторый центральный объект, в который встроены другие объекты, составляющие первый уровень иерархии. В каждый из объектов первого и последующих уровней могут быть встроены объекты следующего уровня. Так это процесс продолжается. Таким образом, объекты в этой модели "толстые", поскольку в них встроено большое число других объектов. В особенности это касается объектов, стоящих на верхних уровнях иерархии.
Формально встраивание реализуется с помощью свойств объектов. Свойства могут быть как терминальными, не являющимися объектами, и так называемыми свойствами - участниками, которые возвращают объекты при их вызове.
Давайте перейдем к рассмотрению библиотеки объектов Excel 9.0 и начнем с центрального объекта этой библиотеки - Excel.Application .
Объект Excel Application
Объект Excel.Application задает приложение Excel. А посему свойства, методы и события этого объекта должны характеризовать приложение в целом. Понятно, что у этого объекта должно быть свойство Workbooks , возвращающее все открытые в приложении рабочие книги, свойство Windows , возвращающее открытые окна, свойства, такие как CommandBars , возвращающие объекты интерфейса, и другие подобные свойства. Методов и событий, характерных для всего приложения в целом, по-видимому, не так уж и много. Так что, казалось бы, структура этого объекта должна быть достаточно простой. Однако реально это не так, - у объекта Excel.Application очень большое число свойств, методов и событий, что не позволяет мне описать их полностью, да и нет в этом особого смысла. Объект Excel.Application , на мой взгляд, явно перегружен, многие его свойства и методы без всякого ущерба можно было бы исключить, поскольку они оперируют с объектами, стоящими на более низких уровнях иерархии и не имеют прямого отношения ко всему приложению в целом. Приведу лишь один пример. Первое по алфавиту свойство ActiveCell возвращает объект, задающий активную ячейку. Понятно, что речь идет об активной ячейке активной страницы активной рабочей книги. Непонятно только, зачем нужно было добавлять это свойство самому приложению. Вполне достаточно, чтобы им обладал объект WorkSheet , задающий страницу книги. Более того, если в момент вызова свойства ActiveCell нет активной страницы с ячейками, то возникнет ошибка, чего не происходит, если активную ячейку вызывает объект WorkSheet . Примеров подобной перегруженности объекта Application можно привести много. Я в своем описании объектов верхнего уровня не всегда буду упоминать такие свойства, полагая, что лучше рассказать о них там, где они необходимы по существу.
Общие объекты и Excel.Application
Давайте начнем рассмотрение со свойств объекта Excel.Application , возвращающих уже знакомые нам общие объекты:
Все объекты, приведенные в этой таблице, играют важную роль при программной работе с документами Excel, как, впрочем, и с другими документами Office 2000.
Свойства - участники объекта
Рассмотрим теперь свойства - участники объекта Excel.Application , возвращающие объекты, специфические для Excel, Как я и предупреждал, я рассмотрю лишь основные свойства, которые действительно необходимы при работе с объектом Excel.Application .
Таблица 3.2. Основные свойства - участники
Свойство, возвращающее объект Назначение объекта WorkBooks Коллекция открытых в Excel документов - рабочих книг. Основной объект, благодаря которому можно получить доступ к любому документу Excel и далее работать с объектами этой рабочей книги. Windows Коллекция открытых окон во всех рабочих книгах. Дело в том, что одну и ту же рабочую книгу часто полезно открывать в нескольких окнах, что позволяет видеть разные участки рабочей книги. Коллекция Windows позволяет получить доступ к каждому такому окну. Чаще всего, свойство Windows используется при работе с объектом WorkBook , для объекта Application это один из примеров той перегрузки, о которой я упоминал выше. WorkSheetFunction Объект - контейнер, в котором находятся многочисленные функции Excel, начиная от обычных математических функций и кончая функциями, применяемыми для решения задач статистики, прогноза, работы с датами и прочими. AddIns Коллекция компонент, расширяющих возможности решения специальных задач в Excel. AutoCorrect Знакомый по приложению Word объект, позволяющий задавать автоматическую корректировку набираемых текстов в ячейках Excel. DefaultWebOptions Объект, позволяющий устанавливать параметры для документов Excel, сохраненных в виде Web-страниц. Схож с аналогичным объектом Word.Application , но имеет свою специфику. Dialogs Объект Dialogs также как и три предыдущих объекта - AddIns, AutoCorrect, DefaultWebOptions относится к группе схожих объектов, встречающихся в каждом из приложений Office 2000, имеющих много общего, но имеющих и отличия, связанные со спецификой приложения. Также как и в Word, объект Dialogs задает коллекцию стандартных диалоговых окон, которые могут открываться в Excel, позволяя организовать диалог с пользователем. Names Одно из перегруженных свойств, возвращающее коллекцию всех имен, используемых для отдельных ячеек и областей всех открытых документов Excel. Чаще всего, это свойство используется при работе с отдельной рабочей книгой или отдельной страницей. ODBCErrors Коллекция объектов класса ODBCError . Элементы этой коллекции создаются автоматически источником ODBC-данных, если при выполнении запроса на получение данных возникли ошибки. Если ошибок не было, то и коллекция будет пустой. OLEDBErrors Коллекция объектов класса OLEDBError . Аналогично предыдущей коллекции, ее элементы появляются при наличии ошибок в процессе работы с базой данных, когда используется интерфейс OLE DB. RecentFiles Объект, относящийся к группе схожих объектов семейства Office 2000. Он задает коллекцию файлов, хранящих документы Excel последнего использования. - Группа активных объектов - ActiveWorkbook, ActiveWindow, ActiveSheet, ActiveChart, ActiveCell, ActivePrinter , - возвращающих активную рабочую книгу, окно, активную рабочую страницу, диаграмму или ячейку, если таковые существуют в момент вызова соответствующего свойства. При отсутствии запрашиваемого активного объекта возникнет ошибка. Все эти объекты будут подробно рассмотрены, но чуть позже, когда мы спустимся вниз по иерархии объектов. Особняком стоит свойство, возвращающее активный принтер. Это свойство действительно имеет смысл связать с приложением. Заметьте, что объекты, стоящие на нижних уровнях иерархии, например, Workbook , этим свойством не обладают, так что добраться до принтера можно только через объект Application.
- Группа коллекций и объектов Range, входящих в состав соответствующего активного объекта - Sheets, Charts, Rows, Columns, Cells, Range - возвращающие соответственно коллекции рабочих страниц, страниц диаграмм активной рабочей книги, объект Range, содержащий все строки, столбцы, ячейки или заданную область активной рабочей страницы. Также как и в случае вызова объектов предыдущей группы, при вызове этих свойств следует быть осторожным, поскольку возникает ошибка, если нет соответствующего активного объекта.
- Свойство Selection возвращает выделенный объект в активном окне. Тип возвращаемого объекта зависит, от текущего выделения. Возвращается Nothing, если в активном окне нет выделенного объекта.
- Свойство ThisWorkbook возвращает текущую рабочую книгу, содержащую выполняемый макрос, один из операторов которого и вызвал это свойство. Это свойство представляет единственный способ добраться до рабочей книги, содержащей компонент AddIn, изнутри макросов, составляющих этот компонент.
Терминальные свойства
Методы объекта Application
- Метод ActivateMicrosoftApp(Index As xlMSApplication) позволяет активировать приложение Microsoft, заданное соответствующей константой в аргументе метода. Если приложение уже выполняется, то активируется текущий вариант. В противном случае открывается экземпляр приложения, и затем приложение активируется. Константы позволяют задать все основные приложения Office 2000, а также FoxPro, Project и некоторые другие приложения Microsoft.
- Группа методов - DeleteCustomList, DeleteChartAutoFormat, AddCustomList, AddChartAutoFormat - позволяет удалять и добавлять пользовательские списки и пользовательские форматы к тем спискам и форматам, которые используются в самом приложении Excel.
- Группа из пяти DDE-методов позволяет обеспечить динамический обмен данными между приложениями в соответствии со стандартом DDE. Сохранена для поддержки совместимости с предыдущими версиями Excel.
- Методы, запускающие вычисления - Calculate, CalculateFull , приводят к перевычислению рабочих страниц всех рабочих книг. Метод CheckSpelling запускает проверку орфографии во всех рабочих книгах. Метод Evaluate(Name) преобразует имя объекта в сам объект. Эти методы объединяет то, что все они, по существу, являются методами объектов более низкого уровня иерархии - объектов Workbook, WorkSheet, Chat . Объект Application "наследует" эти методы у своих потомков, что позволяет распространять действие метода на все открытые рабочие книги. Следует понимать, что пользоваться вызовом этих методов объектом Application стоит в очень редких случаях. Опять-таки, можно говорить о некоторой излишней перегрузке объекта Application .
- Группа Get-методов - GetCustomListContents, GetCustomListNum, позволяет вернуть содержимое пользовательского списка, получить его номер. Методы GetOpenFileName, GetSaveAsFileName позволяют получить имя файла, выбранное пользователем, открывая по ходу дела соответствующее диалоговое окно.
- Группа On-методов, позволяющих запустить на выполнение некоторый макрос. Метод OnKey(Key, Procedure) позволяет запустить макрос, заданный вторым параметром метода, при нажатии пользователем комбинации клавиш, заданной первым параметром метода. Метод OnTime(EarliestTime, Procedure As String, [LatestTime], [Schedule]) позволяет запустить макрос, заданный вторым параметром метода, в указанное время. О схожем методе OnTime рассказывалось при описании методов объекта Word.Application . Методы OnRepeat(Text As String, Procedure As String) и OnUndo(Text As String, Procedure As String) позволяют указать макросы и текст, который будет появляться в пунктах "Повторить Выполнение" и "Отменить Выполнение" из меню Правка. Когда пользователь выберет соответствующий пункт меню, то запускается макрос, указанный втор ым параметром метода. Вот простой пример на применение этих методов:
- Методы Repeat и Undo близки по духу к рассмотренным только что методам. Они позволяют повторить или отменить последнее действие пользователя при его работе вручную.
- Еще одним важным методом, позволяющим запускать макрос на выполнение, является метод Run(Macro, Arg1, Arg2, …) . Метод Run позволяет выполнить макрос (процедуру или функцию) проекта рабочей книги или функцию из DLL или XLL. Макрос, запускаемый на выполнение, может находиться в той же рабочей книге, что и макрос, вызвавший метод Run , но может принадлежать и другой рабочей книге. В этом случае, естественно, проекты должны быть связаны по ссылке и в проекте, который вызывает макрос другого проекта, должна быть установлена ссылка на вызываемый проект. При вызове макросу могут быть передано произвольное число аргументов, все они передаются по значению, так что, заметьте, нельзя передать макросу сам объект, а только его значение, задаваемое свойством Value . Метод Run в свою очередь возвращает значение, являющееся результатом выполнения макроса. Приведу простой пример, демонстрирующий все особенности вызова метода Run :
Проекту документа BookOne я дал имя BookOneProject . В этом проекте объявлена глобальная переменная
В модуль с именем ModuleOne этого проекта я поместил описание процедуры PlusXY и функции Plus1 . Они выполняют простые и понятные без комментариев действия.
Взгляните, как выглядит сама форма.
Рис. 3.1. Форма FlyForm, открытая на "мгновение"- Метод Help([HelpFile], [HelpContextID]) позволяет вызвать справочное руководство, указав при необходимости и соответствующий раздел в этом руководстве. Можно вызывать как стандартную справочную систему, - в этом случае не нужно задавать аргументы при вызове метода, либо, что чаще бывает, собственную справочную систему. Первый параметр метода задает имя файла, хранящего справочное руководство. Этот файл может иметь уточнение "chm" , если руководство подготовлено с помощью инструментария HTML Help Workshop, или иметь уточнение "htm", если справочная система создана с помощью инструментария Microsoft WinHelp.
- Методы Intersect(Arg1 As Range, Arg2 As Range, …)As Range и Union(Arg1 As Range, Arg2 As Range, …)As Range возвращают в качестве результата объект Range , задающий прямоугольную область, представляющую соответственно пересечение или объединение областей аргументов, которых должно быть не менее двух и не более 30.
- Метод InputBox , по существу, эквивалентен одноименной функции из библиотеки VBA и позволяет организовать диалог с пользователем и принять введенное им значение. Функция InputBox является одной из наиболее широко применяемых функций, и примеров ее вызова приводилось достаточно много. Не обойтись без нее и в примерах этой книги. Что вызывать метод InputBox объекта Application или функцию InputBox библиотеки VBA - дело вкуса.
- Метод Volatile([Volatile]) позволяет включить или выключить принудительное вычисление для функций, вызываемых в формулах рабочего листа. Метод вызывается непосредственно в функции, которую предполагается пометить. Булев параметр Volatile помечает функцию, как принудительно вычисляемую, если он имеет значение true . Это значение является значением параметра по умолчанию.
Я рассмотрел большую часть методов объекта Application. Замечу, что в предыдущей версии этих методов было значительно больше, поскольку многие функции Excel - математические и прочие были доступны на этом уровне. Теперь, как и положено, все они находятся в специальном контейнере WorkSheetFunction.
Как загрузить новый экземпляр Excel или подключиться к запущенному экземпляру EXCEL.EXE? Как отсоединиться от Excel и закрыть его экземпляр?
Для определения, будет ли запущен новый экземпляр Excel.Application или присоединение к уже запущенному, используется свойство TExcelApplication.ConnectKind. По умолчанию это свойство имеет значение ckRunningOrNew (константы определены в unit OleServer). Однако рекомендуется, если нет на то особой надобности, всегда запускать новый экземпляр Excel.Application во избежание конфликтов с запущенным раннее экземпляром Excel.Application. Свойство TExcelApplication.AutoQuit в конструкторе устанавливается по умолчанию в False (только в модуле ExcelXP в True) — это значит, что если вы хотите при отсоединении завершить работу Excel (закрыть), то нужно вызвать метод TExcelApplication.Quit или установить свойство TExcelApplication.AutoQuit равным True.
Delphi:
Как запустить Excel из консольного приложения или в отдельном потоке (TThread)
Консольное приложение и дочерний поток (класс TThread) не предполагают работу с COM сервером, как это сделано в главном потоке для Application в VCL. Для того чтобы все работало, необходим вызов функции WinAPI CoInitialize.
Отличие при работе в Thread — весь код работы должен быть помещен в метод TThread.Execute.
Как получить и настроить папки Excel по умолчанию?
По умолчанию все открываемые и сохраняемые документы находятся в папке "%USERPROFILE%Мои документы" (Personal). Ссылка на эту папку содержится в свойстве TExcelApplication.DefaultFilePath (read/write). Для чтения и записи в другие папки используйте полный путь к файлу книги.
Delphi:
Чем отличается TExcelApplication от ExcelApplication, TExcelWorkbook от ExcelWorkbook?
Все отличие TExcelApplication от ExcelApplication в том, что первый — наследник TOleServer. Это расширяет возможности для выбора способа подключения/отключения COM-сервера Excel и упрощает работу с событиями Excel.Application. Получить интерфейс ExcelApplication всегда можно из свойства TExcelApplication.DefaultInterface (DefaultInterface — штатное свойство всех наследников класса ToleServer).
Как узнать локализацию Excel'я (русская версия или нет)?
Для Delphi это можно почитать здесь.
Как сделать, чтобы Excel работал быстрее?
Для ускорения работы с Excel'ем можно сделать следующие шаги:
Delphi:
Не использовать метод Select, и, как следствие, свойство Selection (смотрите дальше).
Существенно повышается скорость, если вместо записи в каждую ячейку использовать запись из VarArray (смотрите дальше про объект Range). В Demo-проекте есть тест затраченного времени для различных методов записи.
Так как основное время работы с Excel'ем затрачивается на перерисовку (установка отступов для страницы, размеров строк и столбцов, атрибуты шрифтов и т.д.), то лучше всего использовать заранее подготовленный шаблон.
Как вывести приложение Excel на передний план?
Для "выноса" приложения Excel на передний план просто вызовите метод Visible объекта ExcelApplication.
Delphi:
Как сделать так, чтоб работали английские формулы и форматы чисел в ячейках?
Что такое Selection?
Как пишут в "Best Practices for Setting Range Properties": "Код, использующий Selection, сгенерирован записью макроса Excel, часто используется для обнаружения объекта или метода, который будет работать. Это хорошая идея, за исключением того, что записанный макрос не оптимизирован для пользователя. Обычно Excel при записи макроса использует Selection и изменяет выбор объекта при записи какой либо задачи".
Т.е. использование Selection не является обязательным и даже не рекомендуется для разработчика. Цитата оттуда же: "На практике вызывайте метод Select объекта только тогда, когда твердо намерены изменить выбранный пользователем элемент. Вы можете никогда не использовать метод Select просто потому, что это вам удобно, как разработчику. Если вы устанавливаете свойства объекта Range, у вас всегда есть альтернатива. Отказ от метода Select не только делает ваш код быстрее, но и порадует пользователей вашей программы (it makes your users happier)". Эта тема еще затронута здесь.
Почему не нужно использовать Excel.Application.Range, а следует ExcelWorksheet.Range?
Использование ExcelApplication.Range позволяет работать только с активным листом активной книги. Если вы открываете по ходу работы еще одну книгу или делаете активным другой лист в книге (например, добавляете новый лист), то данные будут вноситься именно в активный в данный момент лист. Чтоб не попасть в неудобную ситуациюб всегда используйте объект Range объекта ExcelWorksheet. Это не только обезопасит ваш код от попадания "куда Бог пошлет", но и позволит записывать данные сразу в несколько листов и даже книг без изменения ActiveSheet и ActiveCell.
Если приложение Excel работает и пользователь выполняет в Excel, одновременно, какие либо действия, то попытка подключится к Excel и вносить в него данные, вызывает ошибку. Как этого избежать?
При работе с запущенным приложением Excel, он может быть занят, если в это время пользователь редактирует значение в ячейке, или в нем открыто какое-либо модальное диалоговое окно (например, "Открытие документа"). Чтобы обойти эту ситуациюб всегда запускайте новую копию Excel.Application и устанавливайте свойство Interactive в False, что запретит пользователю что-либо делать в Excel'е или закрыть запущенный экземпляр Excel.Application:
Delphi:
Экспорт в Excel длится довольно долго. Как можно уведомлять пользователя о ходе выполнения работы?
Чтобы пользователь не подумалб что во время экспорта данных в Excel ваша программа и Excel "висит", лучше уведомлять его о ходе работы. Т.к. обновление экрана занимает довольно много времени и так довольно длительного процесса экспорта (хотя все же стоит подумать, как этот процесс оптимизировать и ускорить), то лучшим выходом из этой ситуации является показ этапов работы в свойстве ExcelApplication.StatusBar:
Delphi:
Переношу записанный VBA макрос рисования границы в Excel, но Delphi не знает что такое xlContinuous. Где взять значение этой константы?
Почему я не могу найти описание компонентов палитры Delphi "Servers" в Help'е? Где найти документацию по работе с Excel'ем?
Компоненты на палитре "Servers" — это "обертка" (wrapper) популярных COM-серверов Microsoft. Для описания их объектной модели, свойств и методов используйте поставляемый с Microsoft Office VBA Help или ищите информацию на MSDN (также смотрите "Полезные ссылки" в конце).
Объектная модель Microsoft Excel насчитывает множество объектов. В рамках настоящего пособия не ставится цель изучить все из них. Для разработки большинства программ достаточно знать основные из них, такие как Application, Workbook(s), Worksheet(s), Range, Chart.
Различают объекты и их семейства. Семейство (объект Collection) представляет собой объект, содержащий в себе несколько других объектов одного типа. Все объекты Excel и их семейства имеют родовые иерархические отношения. Иерархия основных объектов MS Excel приведена на рис. 1.
Главным в иерархии объектов Excel является объект Application (Приложение), которое представляет само приложение Excel. Этот объект имеет более 120 свойств и 40 методов, которые предназначены для установки параметров приложения Excel. Кроме того, объект Application позволяет вызывать более 400 встроенных функций рабочего листа при помощи конструкции вида:
Application.ФункцияРабочегоЛиста(Аргументы)
Например:
Application.Pi() ‘Вычисление числа Пи.
Application.Sum(Аргументы)Существует следующий формат программного кода, задающего установку свойства и использование метода объекта:
Объект. Свойство = ЗначениеСвойства
Объект. Метод [Параметр1 […]]Если Х является свойством — участником объекта Application, то обращение к этому свойству возвращает ссылку на объект X. Обращение Application.X.Y.Z, где X, Y и Z -свойства-участники, позволяет добраться до объекта Z, находящегося на третьем уровне вложенности. Обычно цепочка именования начинается спецификатором (объектом)Application, но иногда его можно опустить. Некоторые свойства и методы объекта Appiplication относятся к глобальным. Для них спецификатор Application разрешается опускать, непосредственно именуя глобальный элемент. Вот пример нескольких обращений к элементам объекта Application: Application. ActiveDocument.
Можно короче:
ActiveDocument
ActiveSheetМожно указать и полный путь: Application. ActiveSheet
Объект Application, основные свойства, методы и события
Свойства объекта Application:
Основные методы объекта Application
События объекта Application
Основные свойства, методы и события семейства WorkBooks
Объект Workbook – это файл рабочей книги. Получить объект Workbook можно используя свойства Workbooks, ActiveWorkbook или ThisWorkbook объекта Application.
Основные свойства объектов семейства Workbooks
Основные методы объектов семейства Workbooks
События объектов семейства Workbooks
Упражнение.
Изучаем свойства и методы объектов Application, Workbooks.
Задание:
1. На рабочем листе с именем Лист1 поместите кнопку формы.
2. Назначьте для этой кнопки макрос с именем Кнопка1_Щелкнуть.
3. В окне редактирования кода редактора Visual Basic запишите следующий программный код:Option Explicit
Sub Кнопка1_Щелкнуть()
' Изменение надписи в строке заголовка приложения
Application.Caption = "Упражнение №4 - Свойства, методы и _
события"
MsgBox "Обратите внимание! Изменилась надпись в строке _
заголовка приложения", vbInformation
'Убираем строку формул
Application.DisplayFormulaBar = False
MsgBox "Обратите внимание! Строка формул не отображается" _
, vbInformation
'Убираем панель состояний
Application.DisplayStatusBar = False
MsgBox "Обратите внимание! Панель состояний не _
отображается" , vbInformation
Application.DisplayStatusBar = True
MsgBox "Обратите внимание! Панель состояний вновь _
отображается" , vbInformation
'Изменение размера окна приложения
Application.WindowState = xlNormal
MsgBox "Обратите внимание! Размер окна приложения _
стал нормальным", vbInformation
Application.WindowState = xlMinimized
MsgBox "Обратите внимание! Размер окна приложения _
стал минимальным" , vbInformation
Application.WindowState = xlMaximized
MsgBox "Обратите внимание! Размер окна приложения _
стал вновь максимальным", vbInformation
'Создание новой рабочей книги
'Workbooks.Add
MsgBox "Обратите внимание! Создана новая рабочая книга" _
, vbInformation
'Активизация созданной рабочей книги
Workbooks("Книга2").Activate
End Sub4. Прочитайте все команды программы и попытайтесь понять их назначение и синтаксис записи. Обратите внимание на текст комментариев.
5. Запустите макрос на выполнение.
6. Проследите за тем, какие действия выполняет программа.
7. Сопоставьте команды программы и выполняемые ей действия.
8. Изучите правила записи операторов кода.Читайте также: