Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 6910|回复: 14

[已解决]怎样导出对象的属性和方法

[复制链接]
发表于 2010-9-16 23:05 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2013-4-21 11:11 编辑

有的对象帮助查不到,不好找。

提示列表虽然能看到,但为了选取,测试,常常上上下下,很不方便。

比如,怎样将range对象的属性和方法,导出到A列。

谢谢!

最佳答案
2010-9-17 09:06

找到一个,自己改编成了函数,返回数组。

需要引用附件中的DLL文件。

Function GetAllPros(Target As Object)
    Dim ArrJG()
    Dim oTLB As InterfaceInfo
    Set oTLB = TLI.InterfaceInfoFromObject(Target)
    '定义结果数组
    ReDim ArrJG(1 To oTLB.Members.Count)
    '获取各属性
    For i = 1 To oTLB.Members.Count
        Select Case oTLB.Members(i).InvokeKind
        Case INVOKE_CONST
            ArrJG(i) = "常数:" & oTLB.Members(i).Name
        Case INVOKE_EVENTFUNC
            ArrJG(i) = "事件:" & oTLB.Members(i).Name
        Case INVOKE_FUNC
            ArrJG(i) = "方法:" & oTLB.Members(i).Name
        Case INVOKE_PROPERTYGET
            ArrJG(i) = "属性(Get):" & oTLB.Members(i).Name
        Case INVOKE_PROPERTYPUT
            ArrJG(i) = "属性(Let):" & oTLB.Members(i).Name
        Case INVOKE_PROPERTYPUTREF
            ArrJG(i) = "属性(Set):" & oTLB.Members(i).Name
        Case INVOKE_UNKNOWN
            ArrJG(i) = "未知:" & oTLB.Members(i).Name
        End Select
    Next i
    '返回结果数组
    GetAllPros = ArrJG
End Function

Sub Test()
    Dim A As Object
    Set A = CreateObject("Scripting.Dictionary")
    arr = GetAllPros(A)
    Range("A1").Resize(UBound(arr), 1) = Application.Transpose(arr)
End Sub

Pf6CGe0k.rar (46.06 KB, 下载次数: 76)

怎样导出对象的属性和方法

怎样导出对象的属性和方法
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2010-9-16 23:21 | 显示全部楼层

在vba中好像很难,可以搜索一下“遍历对象属性方法”,看有没有你要的,找到了留一份给我
回复

使用道具 举报

发表于 2010-9-17 08:45 | 显示全部楼层

这个估计没有自带的,也许可以通过反编译帮助文件得到

回复

使用道具 举报

发表于 2010-9-17 08:55 | 显示全部楼层

导入A列是什么意思?

个人觉得用帮助文件的目录已经很方便了。如图

 

怎样导出对象的属性和方法

怎样导出对象的属性和方法

回复

使用道具 举报

 楼主| 发表于 2010-9-17 08:57 | 显示全部楼层

谢谢豆丁、吕布!

抱着万一可能的想法 .... 既然没方便办法,那肯定就不是我能懂的方法,自觉不问了[em04]

回复

使用道具 举报

发表于 2010-9-17 09:03 | 显示全部楼层

提了个链接文件出来,你可以用文本文件处理方法把属性方法等提出来,另外,也可以直接把后缀名改成xml,再用Excel打开

 

a2ooSDNu.rar (2.57 KB, 下载次数: 32)
回复

使用道具 举报

 楼主| 发表于 2010-9-17 09:04 | 显示全部楼层

谢谢E-H-P!

举例range是为说明问题,看帮助的确是足够了。

但有时碰到的对象是帮助里没有的,只有通过“对象.”的提示列表来察看。当然,就实际需要来说,也不是必须的。既然想到了这个问题,于是便想问问了。

回复

使用道具 举报

发表于 2010-9-17 09:06 | 显示全部楼层    本楼为最佳答案   

找到一个,自己改编成了函数,返回数组。

需要引用附件中的DLL文件。

Function GetAllPros(Target As Object)
    Dim ArrJG()
    Dim oTLB As InterfaceInfo
    Set oTLB = TLI.InterfaceInfoFromObject(Target)
    '定义结果数组
    ReDim ArrJG(1 To oTLB.Members.Count)
    '获取各属性
    For i = 1 To oTLB.Members.Count
        Select Case oTLB.Members(i).InvokeKind
        Case INVOKE_CONST
            ArrJG(i) = "常数:" & oTLB.Members(i).Name
        Case INVOKE_EVENTFUNC
            ArrJG(i) = "事件:" & oTLB.Members(i).Name
        Case INVOKE_FUNC
            ArrJG(i) = "方法:" & oTLB.Members(i).Name
        Case INVOKE_PROPERTYGET
            ArrJG(i) = "属性(Get):" & oTLB.Members(i).Name
        Case INVOKE_PROPERTYPUT
            ArrJG(i) = "属性(Let):" & oTLB.Members(i).Name
        Case INVOKE_PROPERTYPUTREF
            ArrJG(i) = "属性(Set):" & oTLB.Members(i).Name
        Case INVOKE_UNKNOWN
            ArrJG(i) = "未知:" & oTLB.Members(i).Name
        End Select
    Next i
    '返回结果数组
    GetAllPros = ArrJG
End Function

Sub Test()
    Dim A As Object
    Set A = CreateObject("Scripting.Dictionary")
    arr = GetAllPros(A)
    Range("A1").Resize(UBound(arr), 1) = Application.Transpose(arr)
End Sub

Pf6CGe0k.rar (46.06 KB, 下载次数: 76)

回复

使用道具 举报

发表于 2010-9-17 09:07 | 显示全部楼层

这是Excel格式的,每个属性的帮助没有哦,因为帮主题与帮助链接是分散在不同文件中的

 

D66y4YQs.rar (12.66 KB, 下载次数: 18)
回复

使用道具 举报

 楼主| 发表于 2010-9-17 09:33 | 显示全部楼层

吕布的可以,但不会用;阿木的也可以,知道用,但很多不懂,这次给阿木吧。

方法:_NewEnum
方法:Add
方法:AddRef
方法:Exists
方法:GetIDsOfNames
方法:GetTypeInfo
方法:GetTypeInfoCount
方法:Invoke
方法:Items
方法:Keys
方法:QueryInterface
方法:Release
方法:Remove
方法:RemoveAll
属性(Get):CompareMode
属性(Get):Count
属性(Get):HashVal
属性(Get):Item
属性(Let):CompareMode
属性(Let):Item
属性(Let):Key
属性(Set):Item

为什么阿木的字典对象里的属性和方法,多了很多啊

[em09]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 11:26 , Processed in 0.321414 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表