【发布时间】:2013-06-29 19:46:02
【问题描述】:
我正在使用 C# 从 Excel VBA 迁移到 VSTO。在 VBA 中,我有一个名为 IsInCollection 的 3 行自定义函数,如下所示:
On Error Resume Next
Set obj = collectionObject(itemObject)
IsInCollection = Not (obj is Nothing)
我一直使用它来检查给定的工作簿是否打开,或者工作簿是否包含具有特定名称的工作表等。因为集合和项目参数被定义为对象,它可以与任何东西一起使用。
我正在尝试在托管代码中创建相同的实用程序函数/方法,并且正在苦苦挣扎。问题在于collectionObject(itemObject) 表达式。 C# 不允许我像 VBA 那样只索引对象。
如果有人能指出我正确的方向,将不胜感激。从我的搜索中,我一直在研究 QueryInterface,但不确定这是否是我应该寻找的地方。似乎 Excel 对象以System._ComObject 的形式出现,所以大概我需要以某种方式遍历它(?)。
TIA
【问题讨论】: