Here's a modification which works without Error-Handling.

Code:
Option Explicit

Private Sub Form_Load()
  EnumerateProperties Text1, INVOKE_PROPERTYGET
  EnumerateProperties Text1, INVOKE_PROPERTYPUT
End Sub
 
Public Function EnumerateProperties(pObject As Object, pType As InvokeKinds)
  Dim TypeLib As TLI.InterfaceInfo, Prop As TLI.MemberInfo, Ret
  Set TypeLib = TLI.InterfaceInfoFromObject(pObject)
  For Each Prop In TypeLib.Members
    If Prop.InvokeKind = pType And Prop.Name <> "Index" Then
      AssignVariantValue Ret, TLI.InvokeHook(pObject, Prop.MemberId, INVOKE_PROPERTYGET)

      Debug.Print Left$(Prop.Name & Space$(25), 25); TypeName(Ret), IIf(IsObject(Ret), "<ObjRef>", Ret)
    End If
  Next
End Function

Private Sub AssignVariantValue(Dst, Src)
  If IsObject(Src) Then Set Dst = Src Else Dst = Src
End Sub
Olaf