Исходный текст
Option Explicit
Call ShowInfo(ThisApplication.Shell.SelObjects)
'==============================================================================
'Вывести информацию обо всех атрибутах подсвеченного
'выделением объекта
'==============================================================================
Sub ShowInfo(ObjCol)
'Если приехала пустая коллекция объектов, закончить работу
If ObjCol.Count = 0 Then
MsgBox "Нет ни одного выделенного объекта.", vbInformation
Exit Sub
End If
Dim obj, attr, ACol, tAttrDefTypes, num, RetVal, str, strVal, usr
'Получить коллекцию атрибутов объекта
Set obj = ObjCol(0)
Set ACol = Obj.Attributes
'Если коллекция атрибутов пустая, закончить работу
If ACol.Count = 0 Then
MsgBox "Объект """ & Obj.Description & """ не имеет атрибутов.", vbInformation
Exit Sub
End If
' Перечисление типов данных TDMS
tAttrDefTypes = Array ("tdmString", "tdmInteger", "tdmReal", "tdmBool", _
"tdmInteger64", "tdmDate", "tdmClassifier", "tdmObjectLink", "tdmList", _
"tdmUserLink", "tdmFileLink", "tdmTable")
'Если коллекция атрибутов непустая, вывести описания
'каждого элемента коллекции в Окно сообщений.
For Each attr In ACol
str = ACol.Index(attr)+1 & ") " & attr.Description & Chr(13)' № п/п, описание
str = str & "SysID: " & attr.AttributeDefName & Chr(13) 'системное имя типа
str = str & "Тип данных: " & tAttrDefTypes(attr.Type) & Chr(13) 'тип данных
'В логах отладчика выводим идентификатор
ThisApplication.DebugPrint("Идентификатор атрибута " & attr.Description & " - " & attr.Handle)
'Вывести значение атрибута, если он непустой (проверим свойство Empty).
If attr.Type = tdmTable Then 'для таблиц свойство Empty всегда имеет значение TRUE
strVal = "таблица, размерность: " & attr.Rows.Count & "x" & attr.Rows.AttributeDefs.Count
ElseIf attr.Empty <> FALSE Then 'атрибут не инициализирован
strVal = "не присвоено"
Else
strVal = attr.Value
'Если атрибут - ссылка на объект, пользователя, классификатор или файл,
'добавим описание элемента, на который ссылаемся
Select Case attr.Type
Case tdmClassifier
strVal = strVal & Chr(13) & "Ссылка на классификатор, SysID: " & _
attr.Classifier.SysName
Case tdmObjectLink
strVal = strVal & Chr(13) & "Ссылка на объект типа """ & _
attr.Object.ObjectDef.Description & """"
Case tdmUserLink
Set usr = attr.User
strVal = strVal & Chr(13) & "Ссылка на пользователя: " & _
usr.FirstName & " " & usr.MiddleName & " " & usr.LastName
Case tdmFileLink
strVal = strVal & Chr(13) & "Ссылка на файл типа " & _
attr.File.FileDef.Description
End Select
End If
str = str & "Значение: " & strVal
'Добавить описание в Окно сообщений
ThisApplication.AddNotify str
Next
End Sub
'==============================================================================