- •Объектная модель
- •Полная и неявная ссылка на объект
- •Ссылка на активную рабочую книгу, лист, ячейку, диаграмму и принтер
- •Загрузка инсталлированной надстройки
- •Управление уровнем безопасности
- •Семейство встроенных диалоговых окон
- •Объект FileDialog
- •Методы объекта Application
- •Установка выполнения специфицированной процедуры при нажатии заданной комбинации клавиш
- •Переопределение горячих клавиш приложения
- •Проверка правописания отдельного слова
- •Симулирование ячеек рабочего листа
- •Электронные часы в ячейке рабочего листа
- •Получение данных из закрытой рабочей книги
- •События объекта Application
- •IgnoreReadOnlyRecommended — необязательный параметр, указывающий надо ли отображать предупреждение о том, что книга была сохранена в режиме "только для чтения";
- •Установка и снятие защиты книги
- •Методы объекта Worksheet
- •Объект Protection
- •События объекта Worksheet
- •Добавление к графическому объекту обработчика события Click
- •Примечание
- •Свойства объекта Range
- •Управление стилем границы диапазона и объекта Border
- •Функции rgb и qbColor
- •Доступ к отдельным ячейкам диапазона
- •Выбор элементов на рабочем листе или в книге
- •Объект Characters
- •Объект Comment
- •Определение текущего диапазона
- •Объект Font
- •Объект Interior
- •Установка числового формата
- •Переопределение размеров диапазона
- •Методы объекта Range
- •Табуляция функции
- •Заполнение диапазона по одному значению
- •Специальная вставка
- •Вставка диапазона с транспонированием
- •Бегущая картинка
- •Поиск значения в диапазоне
- •Повторный поиск и поиск всех значений
- •Поиск по формату
- •Замена значений
- •Ввод в диапазон неповторяющихся значений
- •Озвучивание текста
- •Построение графа
- •Пользовательские функции
- •Математические функции
- •Надстройки
- •Где хранятся макросы?
FileName — обязательный параметр, специфицирующий имя файла;
UpdateLinks — необязательный параметр, указывающий на то, как должны обновляться связи в рабочей книге;
ReadOnly — необязательный параметр. Если он принимает значение True, то книга открывается только для чтения;
Format — необязательный параметр, специфицирующий разделитель, если MS Excel открывает текстовый файл;
Password — необязательный параметр, указывающий пароль для открытия защищенной рабочей книги;
WriteResPassword — необязательный параметр, специфицирующий пароль для внесения изменений в защищенную от записи книгу;
IgnoreReadOnlyRecommended — необязательный параметр, указывающий надо ли отображать предупреждение о том, что книга была сохранена в режиме "только для чтения";
Origin — необязательный параметр, специфицирующий, какой текстовый файл создан, если MS Excel открывает текстовый файл;
Delimiter — необязательный параметр, указывающий пользовательский разделитель. Этот параметр используется только в случае, если значение параметра Format равно 6;
Editable — необязательный параметр, позволяющий открыть данный шаблон для редактирования;
Notify — необязательный параметр, который при значении False запрещает любые попытки открытия недостижимых по каким-либо причинам файлов;
Converter — необязательный параметр, специфицирующий конвертор, если таковой требуется при открытии файла;
AddToMru — необязательный параметр, значение True которого обеспечивает добавление файла в список недавно использованных файлов;
Local — необязательный параметр, специфицирующий, надо ли сохранять файл в соответствии с локальными установками MS Excel;
CorruptLoad — необязательный параметр, указывающий, открывается нормальный или восстановленный файл;
OpenConfiictDocument — необязательный параметр, позволяющий открыть конфликтные документы.
Например, следующая инструкция открывает рабочую книгу Report.xls.
Workbooks.Open "Report.xls"
Объект Workbook
В иерархии MS Excel объект Workbook идет сразу после объекта Application и представляет файл рабочей книги. Рабочая книга хранится в файлах формата либо XLS (стандартная рабочая книга), либо XLA (полностью откомпилированное приложение). Объект Workbook возвращается либо как элемент семейства Workbooks соответствующим свойством, либо как активная рабочая книга — свойством ActiveWorkbook, либо как книга, в которой данный код выполняется — свойством ThisWorkbook.
Свойства объекта Workbook
Объект Workbook обладает большим набором свойств. Свойства ActiveChart и ActiveSheet возвращают активную диаграмму и лист. Свойства Сharts, Comments, Names, Sheets, Windows, Worksheets возвращают семейства диаграмм, примечаний, имен, листов, окон и рабочих листов данной книги. Перечислим основные свойства объекта Workbook (табл. 5.4).
Таблица 5.4. Основные свойства объекта Workbook
-
Свойство
Описание
ActiveChart
Возвращает активную диаграмму
ActiveSheet
Возвращает активный лист книги. В следующем примере устанавливается имя активного рабочего листа: ActiveSheet.Name = "Отчет"
Author
Устанавливает имя автора книги
AutoUpdateFrequency
Задает частоту обновления книги, совместно используемой несколькими пользователями
AutoUpdateSaveChanges
Указывает, надо ли автоматически пересылать обновления другому пользователю при их сохранении и совместном использовании книги
CalculationVersion
Возвращает версию MS Excel, в которой рабочая книга в последний раз была полностью пересчитана
ChangeHistoryDuration
Задает число дней, в течение которых запоминаются изменения в книге при ее совместном использовании
Charts
Возвращает семейство всех диаграмм книги (которые не внедрены в рабочие листы).
CommandBars
Возвращает семейство всех панелей управления
Comments
Возвращает семейство всех примечаний
CreateBackup
Устанавливает, надо ли создавать backup - копию файла при сохранении изменений в книге
DisplayDrawingObjects
Управляет отображением графических объектов. Допустимыми значениями являются следующие постоянные XIDisplayDrawingObjects:
xlDisplayShapes, xlPlaceholders и xlHide
EnableAutoRecover
Позволяет автоматически восстанавливать
поврежденную книгу
FileFormat
Задает формат файла рабочей книги
FullName
Задает полное имя рабочей книги
FullNameURLEncoded
Задает имя объекта совместно с указанием пути, где расположен файл
HTMLProject
Возвращает объект HTMLProject, представляющий HTML-проект книги в MS Script Editor
HasPassword
Возвращает значение True, если книга защищена паролем, и значение False в противном случае
HasRoutingSlip
Проверяет, ассоциирована ли с книгой маршрутизация ее рассылки пользователям
HighlightChangesOnScreen
Выделяет на экране изменения при совместной работе с книгой нескольких пользователей
IsAddin
Проверяет, используется ли книга как надстройка
Таблица 5.4. Основные свойства объекта Workbook(Продолжение)
-
KeepChangeHistory
Проверяет, запоминаются ли исправления, произведенные пользователями при совместной работе над книгой
ListChangesOnNewSheet
Если значение свойства равно True, то исправления, произведенные пользователями при совместной работе над книгой, отображаются в новом рабочем листе
MultiUserEditing
Если значение свойства равно True, то открытая книга разрешена для совместного использования несколькими пользователями
Name
Задает имя книги
Names
Задает семейство всех имен, использованных в книге
Password
Задает пароль для защиты книги
PasswordEncryptionAlgorithm
Задает алгоритм шифрования, используемый MS Excel для кодировки пароля
PasswordEncryptionFileProperties
Проверяет, шифруются ли свойства документа
PasswordEncryptionKeyLength
Задает стойкость ключа
PasswordEncryptionProvider
Задает тип шифрования, используемого MS Excel для кодировки пароля
Path
Возвращает путь к книге
PrecisionAsDisplayed
Задает, надо ли производить вычисления с данными с той точностью, как они отображаются на рабочем листе
ProtectStructure
Проверяет, защищена ли структура рабочей книги
ProtectWindows
Проверяет, защищены ли окна рабочей книги
PublishObjects
Возвращает семейство PublishObjects объектов PublishObject, каждый из которых представляет элемент рабочей книги, сохраненный для использования в
Web-странице
Readonly
Проверяет, открыта ли книга в режиме "только для чтения"
RevisionNumber
Возвращает количество сохранений книги, пока она была открыта для совместного использования
Routed
Проверяет, была ли книга отправлена по маршруту следующему пользователю
RoutingSlip
Возвращает объект RoutingSlip, который инкапсулирует в себе данные, необходимые при маршрутизированной рассылке книги
SaveLinkValues
Сохранение внешних связей вместе с книгой
Saved
Возвращает значение True, если никаких изменений не было сделано в книге с момента ее последнего сохранения, и значение False в противном случае
Sheets
Возвращает семейство всех листов книги
ShowPivotTableFieldList
Проверяет, можно ли отобразить список полей сводной таблицы
SmartTagOptions
Возвращает объект SmartTagOptions, инкапсулирующий в себе свойства смарт-тега
Styles
Возвращает семейство всех стилей, используемых в книге
Title
Задает заголовок Web-страницы, когда книга будет сохранена как Web-страница
Таблица 5.4. Основные свойства объекта Workbook(Продолжение)
-
UpdateLinks
Указывает на то, как обновляются связи совложенными в книгу OLE-объектами. Допустимы следующие постоянные XlUpdateLinks: xlUpdateLinksAlways, xlUpdateLinksNever, xlUpdateLinksUserSetting
UserControl
Возвращает значение True, если книга была создана пользователем, и значение False, если она была сконструирована программно
WebOptions
Возвращает объект WebOptions, который инкапсулирует в себе данные, используемые MS Excel при сохранении книги как Web-страницы
Windows
Возвращает семейство окон книги
Worksheets
Возвращает семейство всех рабочих листов книги
WritePassword
Устанавливает пароль для записи книги
WriteReserved
Проверяет, защищена ли книга от записи
WriteReservedBy
Задает имя пользователя, у которого в данный момент имеются полномочия на защиту книги от записи
Закрытие книги без сохранения изменений
Свойство Saved объекта Workbook возвращает значение True, если никаких изменений не было сделано в книге с момента ее последнего сохранения, и значение False в противном случае. Поэтому, если в процедуру обработки события BeforeСlose объекта Workbook добавить инструкцию ActiveWorkbook.Saved = True
то книга будет сохранена без сохранения изменений, внесенных в нее с момента последнего ее сохранения, как показано в следующем коде из модуля ЭтаКнига.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Saved = True
End Sub
Определение объекта Workbook по имени рабочей книги
Объекты Workbook образуют семейство Workbooks, доступ к элементам которого можно производить как по имени, так и индексу. В следующем коде доступ к элементам этого семейства реализуется по имени. В качестве искомой книги взята активная рабочая книга, ссылка на которую возвращается свойством ActiveWorkbook. Свойство FullName возвращает полное имя книги, а метод SaveAs сохраняет ее по указаному имени.
Dim wb As Workbook
Set wb = Workbooks(Dir(ActiveWorkbook.FuliName))
Debug.Print wb.FullName
wb.SaveAs Filename:="newfile.xls"
Debug.Print wb.FullName
Как узнать, открыта ли специфицированная рабочая книга
Часто бывает необходимо узнать, открыта ли данная книга. Такую проверку можно провести с помощью следующей функции (листинг 5.21), которая проверяет, возвращает ли ссылка на специфицированную книгу значение Nothing или объект Workbook.
Листинг 5.21. Определение. открыта ли специфицированная рабочая книга
Function WorkbookExists(WorkbookName As String) As Boolean
Dim wb As Workbook
On Error Resume Next
Set wb = Workbooks(WorkbookName)
WorkbookExists = Not (wb Is Nothing)
On Error GoTo 0
End Function
Объект Name и простой способ удаления из рабочей книги ненужных имен
Объект Name инкапсулирует в себе информацию об имени, используемом в рабочей книге. Все имена образуют семейства Names. Удалять ненужные имена из рабочей книги конечно можно вручную, но этот процесс довольно утомительный. Код листинга 5.22 демонстрирует, как семейство Names позволяет пролистать все имена и удалить выбранные.
Листинг 5.22. Пролистывание всех имен и удаление выбранных
Sub CheckingNames()
Dim nm As Name
Dim ans As Integer
If ThisWorkbook.Names.Count = 0 Then
MsgBox "Имена не определены."
Exit Sub
End If
For Each nm In ThisWorkbook.Names
With nm
ans = MsgBox("Удалить имя " & .Name & " ? " & vbCr & _
"относящее к " & .RefersTo, vbYesNo + vbQuestion)
Select Case ans
Case vbYes
.Delete
Case vbNo
End Select
End With
Next
End Sub
Код листинга 5.23 демонстрирует, как можно присвоить имя выделенному диапазону. Ссылка на выделенный диапазон указывается с помощью окна ввода InputBox.
Листинг 5.23. Присвоение имени выделенному диапазону
Sub AddName ()
Dim name As String
name = InputBox("Введите имя")
ActiveSheet.Names.Add Name:=name, _
RefersTo:="=" & Selection.Address()
End Sub
Определение, была ли сохранена открытая рабочая книга
Для того чтобы определить была ли рабочая книга сохранена, можно проверить длину строки, возвращаемую свойством Path объекта Workbook, как показано в листинге 5.24. Это свойство возвращает полный путь к приложению без последнего разделителя и имени файла. Если это свойство возвращает значение 0, то приложение еще не было сохранено.
Листинг 5.24. Определение, была ли сохранена открытая рабочая книга
Function IsSavedO As Boolean
If Len(ThisWorkbook.Path) = 0 Then
IsSaved = False
Else
IsSaved = True
End If
End Function
Методы объекта Workbook
Объект Workbook имеет обширную коллекцию методов, позволяющих реализовывать большой спектр операций от активизации книги до составления сложного отчета с помощью сводной таблицы. В табл. 5.5 перечислены основные методы объекта Workbook.
Таблица 5.5. Основные методы объекта Workbook
Метод |
Описание |
AcceptAllChanges |
Принимает все изменения в совместно используемой книге |
Activate |
Активизирует рабочую книгу так, что ее первый рабочий лист становится активным |
AddToFavorites |
Добавляет книгу в Избранное |
Таблица 5.5. Основные методы объекта Workbook(Продолжение)
Метод |
Описание |
BreakLink |
Конвертирует формулы или OLE-объекты между связанными книгами в значения |
CanCheckln |
Проверяет и устанавливает, можно ли редактировать книгу, расположенную на сервере |
ChangeFileAccess |
Изменяет режим доступа к книге |
ChangeLink |
Изменяет тип связи, установленный между документами |
Checkln |
Производит редактирование книги, расположенной на сервере |
Close |
Закрывает книгу |
DeleteNumberFormat |
Удаляет пользовательский числовой формат |
EndReview |
Прекращает редактирование файла, который был отослан методом SendForReview |
ExclusiveAccess |
Устанавливает для текущего пользователя эксклюзивный доступ к книге |
FollowHyperlink |
Производит переход по гиперссылке |
NewWindow |
Открывает новое окно в книге |
PivotCaches |
Возвращает семейство PivotCaches, представляющее собой кэш-таблицу, отведенную под сводную таблицу |
PivotTableWizard |
Создает сводную таблицу |
Post |
Пересылает книгу в папку общего доступа. Метод работает только с клиентами MS Exchange, соединенными с MS Exchange-сервером |
Printout |
Печатает книги |
PrintPreview |
Задает предварительный просмотр книги |
Protect |
Защищает рабочую книгу от внесения в нее изменений |
ProtectSharing |
Защищает книгу при совместном использовании |
PurgeChangeHistoryNow |
Удаляет данные старше указанного срока из журнала изменений |
RefreshAll |
Обновляет все внешние данные и отчеты, созданные на основе сводной таблицы |
RejectAllChanges |
Отменяет все изменения в книге при совместном ее использовании |
ReloadAs |
Перегружает книгу, созданную на основе HTML-документа, используя указанную кодировку |
RemoveUser |
Отключает указанного пользователя от книги при ее совместном использовании |
ReplyWithChanges |
Отсылает сообщения, подтверждающие завершение редактирования книги |
Save |
Сохраняет книгу |
SaveAs |
Сохраняет книгу в другой файл |
SaveCopyAs |
Сохраняет копию книги |
SendMail |
Отсылает почту, используя встроенные средства MS Mail |
Unprotect |
Снимает защиту с рабочей книги |
UnprotectSharing |
Снимает защиту с совместно используемой книги |
UpdateFromFile |
Обновляет из файла книги только для чтения |
UpdateLink |
Обновляет связи MS Excel и OLE |
WebPagePreview |
Задает предварительный просмотр книги, прежде чем она будет сохранена как Web-страница |
