Возможно, вам потребуется немного улучшить этот код, но он примерно соответствует тому, что вы ищете.Во-первых, вам нужно добавить ссылку на «Typelib information», TLBINF32.dll.Я не уверен, является ли это частью Windows или поставляется с некоторыми из многочисленных SDK, которые я установил на своем компьютере, но он находится в папке System32.
Я предполагаю, что вы устанавливаете свойстваCOM-объект, так что вы будете вызывать функции "свойства размещения", чтобы установить значения вашего объекта.Возможно, вам придется проверить типы данных этих свойств, в моем коде не было преобразований типов данных.
Код выглядит следующим образом:
'Define the variables
Dim tliApp As TLI.TLIApplication
Dim typeinfo As TLI.typeinfo
Dim interface As TLI.InterfaceInfo
Dim member As TLI.MemberInfo
'Initialize typelib reflector
Set tliApp = New TLI.TLIApplication
'Get the type information about myObject (the COM object you want to process)
Set typeinfo = tliApp.ClassInfoFromObject(myObject)
'Set all properties of all the object's interfaces
For Each interface In typeinfo.Interfaces
For Each member In interface.Members
'If this is a "property put" function
If member.InvokeKind = INVOKE_PROPERTYPUT Then
'Invoke the mebmer and set someValue to it.
'Note that you'll probably want to check what datatype to use and do some more error checking
CallByName myObject, member.Name, VbLet, someValue
End If
Next
Next