经过进一步测试,有个AttributeMask属性是表示属性方法的类型 0为公有属性或方法,64是事件以及隐藏的某些对象集合,1应该是私有的,其余的不明 '自定义函数获取对象属性和方法。许多隐藏的属性和方法也出来了。 Function GetAllPros(Target As Object) Dim ArrJG() Dim oTLB As InterfaceInfo Set oTLB = TLI.InterfaceInfoFromObject(Target) '定义结果数组 ReDim ArrJG(1 To oTLB.Members.Count, 1 To 2) '获取各属性 For i = 1 To oTLB.Members.Count Select Case oTLB.Members(i).InvokeKind Case INVOKE_CONST ArrJG(i, 1) = "常数:" & oTLB.Members(i).Name Case INVOKE_EVENTFUNC ArrJG(i, 1) = "事件:" & oTLB.Members(i).Name Case INVOKE_FUNC ArrJG(i, 1) = "方法:" & oTLB.Members(i).Name Case INVOKE_PROPERTYGET ArrJG(i, 1) = "属性(Get):" & oTLB.Members(i).Name Case INVOKE_PROPERTYPUT ArrJG(i, 1) = "属性(Let):" & oTLB.Members(i).Name Case INVOKE_PROPERTYPUTREF ArrJG(i, 1) = "属性(Set):" & oTLB.Members(i).Name Case INVOKE_UNKNOWN ArrJG(i, 1) = "未知:" & oTLB.Members(i).Name End Select ArrJG(i, 2) = oTLB.Members(i).AttributeMask Next i '返回结果数组 GetAllPros = ArrJG End Function Sub 测试() Dim Arr() Arr = GetAllPros(Sheet1) Range("A1").Resize(UBound(Arr), 2) = Arr End Sub |