Каждая книга Excel имеет набор свойств документа — DocumentProperties. Свойства документа делятся на встроенные и настраиваемые, которые можно изменять.
Объект DocumentProperties
Объект DocumentProperties представляет из себя коллекцию отдельных свойств документа — DocumentProperty. Свойства документа делятся на встроенные, которые предназначены только для чтения, и настраиваемые, которые можно добавлять, удалять и изменять их значения из кода VBA Excel.
У каждого свойства документа есть порядковый номер (индекс), а также собственные свойства, из которых наиболее употребительные — наименование (Name), значение (Value) и тип данных (Type).
Встроенные свойства документа
Встроенные свойства документа предназначены только для чтения. Коллекцию встроенных свойств возвращает свойство Workbook.BuiltinDocumentProperties.
Синтаксис:
1 |
Expression.BuiltinDocumentProperties(id) |
- Expression — переменная (выражение), представляющая объект Workbook.
- id — индекс (порядковый номер) или наименование свойства.
Просмотр встроенных свойств
Просмотр одного встроенного свойства документа с помощью кода VBA Excel:
1 2 3 4 5 6 7 8 9 |
Sub Primer1() With ActiveWorkbook Debug.Print .BuiltinDocumentProperties(9).Name 'Результат: Application name Debug.Print .BuiltinDocumentProperties(9).Value 'Результат: Microsoft Excel 'Value - свойство по умолчанию Debug.Print .BuiltinDocumentProperties(9) 'Результат: Microsoft Excel Debug.Print .BuiltinDocumentProperties("Application name") 'Результат: Microsoft Excel End With End Sub |
В коллекции встроенных свойств документа есть такие, значения которых для книги Excel не могут быть определены. При обращении к значению такого свойства будет сгенерирована ошибка.
Вывод всех встроенных свойств документа для книги Excel из кода VBA:
1 2 3 4 5 6 7 8 9 10 |
Sub Primer2() Dim rw As Byte, p As DocumentProperty rw = 1 On Error Resume Next For Each p In ActiveWorkbook.BuiltinDocumentProperties Cells(rw, 1) = p.Name Cells(rw, 2) = p.Value rw = rw + 1 Next End Sub |
Строка On Error Resume Next
предназначена для игнорирования ошибок, возникающих при обращении к значению встроенного свойства документа, которое для книги Excel не может быть определено.
Настраиваемые свойства документа
Настраиваемые свойства документа предназначены для записи и чтения. Их можно использовать для хранения какой-либо информации, которая не подходит для размещения на рабочем листе, в том числе для сохранения значений переменных до следующего сеанса работы с книгой.
Коллекцию настраиваемых свойств документа возвращает свойство Workbook.CustomDocumentProperties.
Синтаксис:
1 |
Expression.CustomDocumentProperties(id) |
- Expression — переменная (выражение), представляющая объект Workbook.
- id — индекс (порядковый номер) или наименование свойства.
Просмотр настраиваемых свойств
Скорее всего для вашей книги Excel еще нет ни одного настраиваемого свойства документа. Проверьте это, запустив код VBA для вывода всех настраиваемых свойств:
1 2 3 4 5 6 7 8 9 |
Sub Primer3() Dim rw As Byte, p As DocumentProperty rw = 1 For Each p In ActiveWorkbook.CustomDocumentProperties Cells(rw, 1) = p.Name Cells(rw, 2) = p.Value rw = rw + 1 Next End Sub |
Если ничего нет, давайте добавим первые пользовательские свойства для активной книги Excel.
Добавление настраиваемого свойства
Настраиваемое свойство для книги Excel добавляется в коллекцию CustomDocumentProperties
с помощью метода Add
.
Синтаксис:
1 |
Expression.CustomDocumentProperties.Add (Name, LinkToContent, Type, Value, LinkSource) |
Expression — переменная (выражение), представляющая объект Workbook.
Параметры:
Параметр | Тип данных | Описание |
---|---|---|
Name | String | Наименование добавляемого свойства. Обязательный параметр. |
LinkToContent | Boolean | Указывает на связь создаваемого свойства (его значения) с содержимым документа-контейнера. True — связь установлена, False — связи нет. Обязательный параметр. |
Type | Variant | Тип данных свойства (его значения), определяемое константой из коллекции MsoDocProperties. Необязательный параметр. |
Value | Variant | Значение свойства. Параметр является обязательным, когда LinkToContent:=False, в противном случае он игнорируется. |
LinkSource | Variant | Источник данных для свойства (его значения). Параметр является обязательным, когда LinkToContent:=True, в противном случае он игнорируется. |
Константы из коллекции MsoDocProperties:
Константа | Значение | Описание |
---|---|---|
msoPropertyTypeNumber | 1 | Целочисленное значение. |
msoPropertyTypeBoolean | 2 | Логическое значение. |
msoPropertyTypeDate | 3 | Значение даты. |
msoPropertyTypeString | 4 | Текстовое значение (строка). |
msoPropertyTypeFloat | 5 | Значение с плавающей запятой. |
Пример добавления настраиваемых свойств документа для активной книги Excel из кода VBA:
1 2 3 4 5 6 7 8 9 10 11 |
Sub Primer4() Dim p1 As DocumentProperty, p2 As DocumentProperty With ActiveWorkbook.CustomDocumentProperties Set p1 = .Add("Настраиваемое свойство 1", False, msoPropertyTypeString, "Добавлено первое пользовательское свойство") Set p2 = .Add("Настраиваемое свойство 2", False, msoPropertyTypeNumber, 35658) End With Debug.Print p1.Name Debug.Print p1.Value Debug.Print p2.Name Debug.Print p2.Value End Sub |
То же самое, но без переменных:
1 2 3 4 5 6 7 8 9 10 |
Sub Primer5() With ActiveWorkbook .CustomDocumentProperties.Add "Настраиваемое свойство 1", False, msoPropertyTypeString, "Добавлено первое пользовательское свойство" .CustomDocumentProperties.Add "Настраиваемое свойство 2", False, msoPropertyTypeNumber, 35658 Debug.Print .CustomDocumentProperties(1).Name Debug.Print .CustomDocumentProperties(1).Value Debug.Print .CustomDocumentProperties(2).Name Debug.Print .CustomDocumentProperties(2).Value End With End Sub |
Изменение значений пользовательских свойств:
1 2 3 4 5 6 7 |
Sub Primer6() With ActiveWorkbook .CustomDocumentProperties("Настраиваемое свойство 1") = "Измененное значение первого пользовательского свойства" .CustomDocumentProperties("Настраиваемое свойство 2").Type = 5 .CustomDocumentProperties("Настраиваемое свойство 2") = 3.14 End With End Sub |
Удаление настраиваемых свойств
Удаление настраиваемых свойств документа для книги Excel из кода VBA осуществляется с помощью метода Delete
.
Удаление одного настраиваемого свойства:
1 2 3 |
Sub Primer7() ActiveWorkbook.CustomDocumentProperties(1).Delete End Sub |
Удаление всех настраиваемых свойств:
1 2 3 4 5 6 |
Sub Primer8() Dim p As DocumentProperty For Each p In ActiveWorkbook.CustomDocumentProperties p.Delete Next End Sub |