×

遍历 属性 参数 InterfaceInfoFromObject tlbinf32

遍历获取指定对象的所有属性名称及其参数列表

鹭岛小千 鹭岛小千 发表于2021-10-02 16:44:47 浏览888 评论0

抢沙发发表评论

【问题描述】如何遍历获取指定对象的所有属性名称及其参数列表呢?

单元格(Range)是最常用的Excel对象,如何遍历获取Range对象的所有属性名称及其参数列表呢?

【小千解答】借助TLBINF32.DLL库。

Step 01 引用DLL库

在VBA编辑窗口,依次单击【工具】→【引用】,勾选“TypeLib Infomation”,确定。

46-1.png

Step 02 编写VBA代码

示例代码如下:

Sub xqoffice()
    Dim xqCell  As Range
    Dim xqIf    As InterfaceInfo
    Dim xqMem   As MemberInfo
    Dim xqPar   As ParameterInfo
    Dim x       As Integer
    Dim y       As Integer
    
    Cells.ClearContents
    [A1].Value = "PropertyName"
    [B1].Value = "Parameters"
    
    Set xqCell = Range("A1")
    Set xqIf = TLI.InterfaceInfoFromObject(xqCell)
    x = 1
    For Each xqMem In xqIf.Members
        If xqMem.InvokeKind = INVOKE_PROPERTYGET Then
            x = x + 1
            Cells(x, 1).Value = xqMem.Name
            
            y = 1
            For Each xqPar In xqMem.Parameters
                y = y + 1
                Cells(x, y).Value = xqPar.Name
            Next xqPar
        End If
    Next xqMem
    Columns.AutoFit
    
    Set xqPar = Nothing
    Set xqMem = Nothing
    Set xqIf = Nothing
End Sub

运行结果:

46-2.png

注解:如果在“引用”对话框列表找不到“TypeLib Infomation”,则先下载下方附件,解压拷贝至C:\Windows\SysWOW64路径下,再在“引用”对话框单击“浏览”按钮,选择它。

46-3.png


附件:TLBINF32.rar


打赏码.png


【参考资料】

  1. 关于调用winapi获取组件信息

  2. Vba遍历控件,获取控件属性值

  3. Vba ppt遍历所有控件(非窗体)的所有属性值

  4. Is there a way to enumerate all properties in a vb6 class module?


群贤毕至

访客