我有一个VBA函数,该函数返回我自己的类模块“ CInputDBEntries”的对象。
UIPath将该对象作为COM__Object接收,要读取它,我需要进行一些CType转换。但是,无论我怎么做,都无法访问对象的成员(值)。
我已经尝试将其转换为“对象”,但是无法访问这些值。 我还尝试将多个类对象另存为一个Collection,但是由于存在错误(从VBACollection到Microsoft.VisualBasic.Collection = COM CastTypeException),CType转换失败了
我也将其发布在UIPath论坛上:https://forum.uipath.com/t/invoke-vba-how-to-read-the-retrieved-com-object-in-uipath-vba-function-returns-custom-type/96115
类定义:
Private strTitle As String
Private strValue As String
Private boolIntegrity As Boolean
方法:
Public Function ReadRelevantEntries() As CInputDBEntries
Dim entry As CInputDBEntries
entry.Title = "title"
entry.Val = "value"
entry.Integrity = True
Set ReadRelevantEntries = entry
End Function
当前我的转换是这样的:CType(listExcelEntries,Object)
期望的结果是能够将值从COM__Object中提取出来,以便我可以读取2个字符串和我的bool变量。
答案 0 :(得分:0)
找到解决方案:
这是错误的方法
var propertyInfo = comObject.GetType().GetProperty("PropertyName")
这是正确的方法
//get the value of comObject.PropertyName
object propertyValue = comObject.GetType().InvokeMember("PropertyName", System.Reflection.BindingFlags.GetProperty, null, comObject, null);
积分:https://smehrozalam.wordpress.com/2010/02/16/c-using-reflection-with-com-objects/