Хорошо писать прикладные программы для MSWord - вставил куда-либо поле {AUTOR} и получил информацию о том, кто автор документа (иногда, правда, это делать опасно - всплывают прелюбопытные подробности). А в других программах MSOffice? Сколько, например символов в таблице Excel? Так просто не получится...:-(
Для этой задачи может помочь коллекция BuiltInDocumentProperties. В MSOffice97 определено 30 (а не 28, как в документации) свойств, названия которых приведены в таблице. Все эти свойства могут быть прочитаны в любом документе MSOffice, вне зависимости от того, какая программа документ породила. Кроме чтения программным путем, MSWord (это уже упоминалось выше) позволяет вывести значение свойств документа в сам документ при помощи полей, но это к программированию на прямую не относится.
Название свойства | Назначение | |
Title | Заголовок | |
Subject | Предмет | |
Author | Автор (создавший документ) | |
Keywords | Ключевые слова | |
Comments | Комментарии | |
Template | Шаблон документа | |
Last Author | Тот, кто последний сохранил документ | |
Revision Number | Число входов для редактирования | |
Application Name | Название приложения, обрабатывающего документ | |
Last Print Date | Дата и время последней печати | |
Creation Date | Дата создания | |
Last Save Time | Дата и время последнего сохранения | |
Total Editing Time | Общая продолжительность редактирования (минуты) | |
Number of Pages | Число страниц | |
Number of Words | Число слов | |
Number of Characters | Число символов | |
Security | Секретность | |
Category | Категория | |
Format | Формат | |
Manager | Менеджер | |
Company | Компания | |
Number of Bytes | Размер файла в байтах в момент последнего сохранения | |
Number of Lines | Число строк | |
Number of Paragraphs | Число абзацев | |
Number of Slides | Число слайдов (определено в PowerPoint, в остальных, вероятно, не используется) | |
Number of Notes | Число заметок к слайдам (определено в PowerPoint, в остальных, вероятно, не используется) | |
Number of Hidden Slides | Число скрытых слайдов (определено в PowerPoint, в остальных, вероятно, не используется) | |
Number of Multimedia Clips | Число клипов (определено в PowerPoint, в остальных, вероятно, не используется) | |
Hyperlink Base | База гиперссылок | |
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.