Шаг 48 - Встроенные свойства документов MSOffice

Хорошо писать прикладные программы для MSWord - вставил куда-либо поле {AUTOR} и получил информацию о том, кто автор документа (иногда, правда, это делать опасно - всплывают прелюбопытные подробности). А в других программах MSOffice? Сколько, например символов в таблице Excel? Так просто не получится... :-(

Для этой задачи может помочь коллекция BuiltInDocumentProperties. В MSOffice97 определено 30 (а не 28, как в документации) свойств, названия которых приведены в таблице. Все эти свойства могут быть прочитаны в любом документе MSOffice, вне зависимости от того, какая программа документ породила. Кроме чтения программным путем, MSWord (это уже упоминалось выше) позволяет вывести значение свойств документа в сам документ при помощи полей, но это к программированию на прямую не относится.

 Название свойстваНазначение
1TitleЗаголовок
2SubjectПредмет
3AuthorАвтор (создавший документ)
4KeywordsКлючевые слова
5CommentsКомментарии
6TemplateШаблон документа
7Last AuthorТот, кто последний сохранил документ
8Revision NumberЧисло входов для редактирования
9Application NameНазвание приложения, обрабатывающего документ
10Last Print DateДата и время последней печати
11Creation DateДата создания
12Last Save TimeДата и время последнего сохранения
13Total Editing TimeОбщая продолжительность редактирования (минуты)
14Number of PagesЧисло страниц
15Number of WordsЧисло слов
16Number of CharactersЧисло символов
17SecurityСекретность
18CategoryКатегория
19FormatФормат
20ManagerМенеджер
21CompanyКомпания
22Number of BytesРазмер файла в байтах в момент последнего сохранения
23Number of LinesЧисло строк
24Number of ParagraphsЧисло абзацев
25Number of SlidesЧисло слайдов (определено в PowerPoint, в остальных, вероятно, не используется)
26Number of NotesЧисло заметок к слайдам (определено в PowerPoint, в остальных, вероятно, не используется)
27Number of Hidden SlidesЧисло скрытых слайдов (определено в PowerPoint, в остальных, вероятно, не используется)
28Number of Multimedia ClipsЧисло клипов (определено в PowerPoint, в остальных, вероятно, не используется)
29Hyperlink BaseБаза гиперссылок
30Number of Characters (with spaces)Общеечисло символов, включая пробелы

Стоит иметь в виду, что при обращении к значению свойства, которое для данного документа не определено, также возникает ошибка выполнения с кодом -2147467259 (знак минус!), что требует аккуратной работы (см. примеры обработчиков ошибок в предыдущем шаге). Также приводит к ошибке попытка записи в свойство, которое данным приложением не поддерживается, что можно установить методом проб и ошибок. Но имена выводятся для всех свойств правильно. Практически полезной может оказаться такая процедура:

Sub test()

On Error GoTo NotDefined
' В следующей стороке ActiveDocument стоит заменть на ActiveWorkbook, etc
For Each prop In ActiveDocument.BuiltInDocumentProperties
	With prop
		PName = .Name
		PValue = .Value
		PType = .Type
		Debug.Print PName & " = " & PValue & " [" & PType & "]"
	End With
Next
Exit Sub
' ОБРАБОТЧИК ОШИБОК
NotDefined:
PValue = "Value not defined"
Resume Next
End Sub

Ее польза в том, что можно исследовать, какие свойства определены для данного типа документов, не появились ли новые свойства с выходом новой версии MSOffice (и не потерялись ли старые :-) ), какие у них типы. Тип выводится в виде целого числа. Результат ее работы (копия Debug Window):

Title = Свойства документов MSOffice [4]
Subject =  [4]
Author = DD [4]
Keywords =  [4]
Comments =  [4]
Template = Normal [4]
Last author = DD [4]
Revision number = 4 [4]
Application name = Microsoft Word 8.0 [4]
Last print date = Value not defined [3]
Creation date = 17.03.00 14:13:00 [3]
Last save time = 17.03.00 15:06:00 [3]
Total editing time = 67 [1]
Number of pages = 3 [1]
Number of words = 1183 [1]
Number of characters = 7702 [1]
Security = 0 [1]
Category =  [4]
Format =  [4]
Manager =  [4]
Company = SBC [4]
Number of bytes = 45056 [1]
Number of lines = 235 [1]
Number of paragraphs = 161 [1]
Number of slides = Value not defined [1]
Number of notes = Value not defined [1]
Number of hidden Slides = Value not defined [1]
Number of multimedia clips = Value not defined [1]
Hyperlink base =  [4]
Number of characters (with spaces) = 8995 [1]

Соответствие числа и предопределенных констант типов - ниже:

1 	msoPropertyTypeNumber
2 	msoPropertyTypeBoolean
3 	msoPropertyTypeDate
4 	msoPropertyTypeString
5 	msoPropertyTypeFloat

Свойства, недоступные в данном приложении, будут иметь вид: Number of slides = Value not defined [1]

Написал и прислал шаг Dmitri Drozdov.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.