Microsoft Excel:

  Таблицы и VBA. Справочник.
  Вопросы и Ответы. Советы. Примеры.
Меню Заметки | Excel 97 : Свойства офисных документов


Rambler's Top100


Counter CO.KZ
Для того, чтобы получить доступ к свойствам открытой рабочей книги, можно воспользоваться примерами, которые опубликованы здесь :

FAQ282 : Как получить или изменить нужное свойство рабочей книги ?
FAQ299 : Как создать, изменить и получить пользовательское свойство рабочей книги ?

Если же Вам необходимо получить доступ к некоторым свойствам (или всем свойствам, включая пользовательские), закрытого офисного документа (причём это может быть не только рабочая книга), то для этого в редакторе VBA в меню Сервис / Tools выберите команду Ссылки / References, затем в появившемся стандартном диалоговом окне установите "флажок" напротив OfficeCompatible x.x Object Library и подтвердите свой выбор нажатием кнопки OK.



Пример#1 : После чего, для получения значений, используйте следующий синтаксис, где переменная iFileName содержит полное имя существующего файла (все нижеперечисленные свойства, естественно, приведены исключительно в качестве примера)
Dim iOffice As New OfficeCompatible.OfficeCompatible
Dim iDocProp    As OfficeCompatible.DocumentProperties

iOffice.Init '"Microsoft Excel"
Set iDocProp = iOffice.CreateDocProps(iFileName)

iAuthor = iDocProp.BuiltinDocumentProperties("Author")

iCounter = iDocProp.CustomDocumentProperties("Счётчик")
iNumberDoc = iDocProp.CustomDocumentProperties("Номер документа")
Комментарий : Пользовательское свойство "Счётчик" обязательно должно существовать. А свойство "Номер документа" обязательно должно иметь некое значение, иначе, Вы получите ошибку, тоже самое касается и некоторых обычных свойств, за исключением нижеперечисленных :


Application Name
Author
Category
Comments
Company
Creation Date
Hyperlink Base
Keywords
Last Author
Manager
Revision Number
Security
Subject
Template
Title
Format

Пример#2 : Для изменения значений свойств закрытого документа, используйте следующий синтаксис :
Dim iOffice As New OfficeCompatible.OfficeCompatible
Dim iDocProp    As OfficeCompatible.DocumentProperties

iOffice.Init '"Microsoft Excel"
Set iDocProp = iOffice.CreateDocProps(iFileName)

iDocProp.BuiltinDocumentProperties("Author") = "Новый автор"

iDocProp.CustomDocumentProperties("Дата_изменения") = Date
iDocProp.CustomDocumentProperties("Номер документа") = 10000

iDocProp.Save
Комментарий : Пользовательское свойство "Дата_изменения" обязательно должно существовать, иначе, Вы получите ошибку.


Пример#3 : Для создания же новых пользовательских свойств можно воспользоваться следующим вариантом :
Dim iOffice As New OfficeCompatible.OfficeCompatible
Dim iDocProp    As OfficeCompatible.DocumentProperties

iOffice.Init '"Microsoft Excel"
Set iDocProp = iOffice.CreateDocProps(iFileName)

With iDocProp.CustomDocumentProperties 
     .Add Name:="Счётчик", LinkToContent:=False, _ 
     Type:=msoPropertyTypeNumber, Value:=1234567890 

     .Add Name:="Памятка", LinkToContent:=False, _ 
     Type:=msoPropertyTypeString, Value:="Текст" 

     .Add Name:="Дата_изменения", LinkToContent:=False, _ 
     Type:=msoPropertyTypeDate, Value:=#4/22/2007# 

     .Add Name:="Печать", LinkToContent:=False, _ 
     Type:=msoPropertyTypeBoolean, Value:=False 

     .Add Name:="Связь_объект", LinkToContent:=True, _ 
      Type:=msoPropertyTypeFloat, LinkSource:="Имя_ячейки" 
End With

iDocProp.Save
Комментарий : Пользовательские свойства, которые предполагается создать, не должны существовать, иначе, Вы получите ошибку.


Дополнение :

#1) Если же Вам потребуется получить значения всех свойств документа, в т.ч. и пользовательских, то для этого можно воспользоваться процедурой GetOfficeDocProperties
Private Sub GetOfficeDocProperties()

    'Следующая библиотека обязательно должна быть подключена
    'OfficeCompatible x.x Object Library

    On Error Resume Next

    iFileName = Application.GetOpenFilename( _
    FileFilter:="Excel Files (*.xls), *.xls", _
    Title:="Необходимо выбрать нужный файл ...")
    
    If iFileName = False Then
       MsgBox "В следующий раз укажите файл", vbCritical, ""
       Exit Sub
    End If

    Dim iOffice As New OfficeCompatible.OfficeCompatible
    Dim iDocProp    As OfficeCompatible.DocumentProperties
    Dim iPropertie  As Object 'Office.DocumentProperty
    Dim iPropValue  As Variant

    iOffice.Init '"Microsoft Excel"
    Set iDocProp = iOffice.CreateDocProps(iFileName)

    For Each iPropertie In iDocProp.BuiltinDocumentProperties
        iPropValue = iPropertie.Value
        If Err.Number <> 0 Then
           iPropValue = "Значение недоступно": Err.Clear
        End If
        MsgBox iPropertie.Name & " : " & iPropValue, , ""
    Next

    For Each iPropertie In iDocProp.CustomDocumentProperties
        MsgBox iPropertie.Name & " : " & iPropertie.Value, , ""
    Next

End Sub

#2) А если Вы захотите отобразить стандартное диалоговое окно, позволяющее вручную изменить свойства фокумента, то для можно воспользоваться методом ShowDialog об'екта DocumentProperties, т.е.
Dim iOffice As New OfficeCompatible.OfficeCompatible
Dim iDocProp    As OfficeCompatible.DocumentProperties

iOffice.Init '"Microsoft Excel"
Set iDocProp = iOffice.CreateDocProps(iFileName)

iDocProp.ShowDialog 'только просмотр
iDocProp.Save 'сохранение изменений

Если же Вы не являетесь обладателем Microsoft Excel 97, то получить доступ к свойствам неоткрытого документа, можно также с помощью библиотеки dsofile.dll. Более подробно смотрите здесь : Sources.ru | FAQ | Доступ к свойствам документа или БД


Автор : Климов Павел Юрьевич
© 2004-2016 Климов П.Ю. Все права защищены. WebDesign & Error's Klimoff