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