ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3583|回复: 21

[已解决] vb工程引用库判断

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-10-6 15:47 | 显示全部楼层 |阅读模式
本帖最后由 976190982 于 2020-10-8 20:19 编辑

运行了别人写的代码,代码中有很多这样的对象。
  1. CreateObject("Microsoft.XMLHTTP")
复制代码

因此我想有没有一种方法,根据这个代码,返回在vb工程引用的库文件是哪一个,名称是哪一个,不知道老师们是否有办法。

========================================

以下是解决办法:


      找了很多的资料最近找到解决办法,然后加以自己修改,现在暂且放上来大家可以讨论下。这个是截图,可见已经很明显了能显示应用的是那一个文件了,只需要浏览就能找到该文件。
image.png


代码如下:

=================================================================
  1. '引用system32/TLBINF32.Dll
  2. Sub Form_Load()
  3. Dim oTLB As InterfaceInfo
  4. Dim Target As Object
  5. Set Target = CreateObject("Scripting.FileSystemObject") '"Scripting.FileSystemObject"为一般后期绑定的对象,可以自行修改
  6. Set oTLB = TLI.InterfaceInfoFromObject(Target)
  7. Debug.Print oTLB.Name
  8. Cells(2, 9) = oTLB.Parent.GUID
  9. Cells(2, 10) = oTLB.Parent.ContainingFile
  10. Cells(2, 11) = oTLB.Parent.Name
  11. For i = 1 To oTLB.Members.Count
  12. Select Case oTLB.Members(i).InvokeKind
  13. Case INVOKE_CONST
  14. Cells(i + 1, 1) = " 常数:" & oTLB.Members(i).Name
  15. Case INVOKE_EVENTFUNC
  16. Cells(i + 1, 2) = " 事件:" & oTLB.Members(i).Name
  17. Case INVOKE_FUNC
  18. Cells(i + 1, 3) = " 方法bai:" & oTLB.Members(i).Name
  19. Case INVOKE_PROPERTYGET
  20. Cells(i + 1, 4) = "属性(Get):" & oTLB.Members(i).Name
  21. Case INVOKE_PROPERTYPUT
  22. Cells(i + 1, 5) = "属性(Let):" & oTLB.Members(i).Name
  23. Case INVOKE_PROPERTYPUTREF
  24. Cells(i + 1, 6) = "属性(Set):" & oTLB.Members(i).Name
  25. Case INVOKE_UNKNOWN
  26. Cells(i + 1, 7) = " 未知:" & oTLB.Members(i).Name
  27. End Select
  28. Next i
  29. End Sub
复制代码
引用文件查询.zip (13.67 KB, 下载次数: 46)



http://tzidc.jb51.net:81/dll/2013/tlbinf32_jb51.net.rar 如果没有这个dll文件,点击链接下载  然后复制到c:\windows\system32\目录中

如果中间出现ActiveX部件不能创建对象的错误,则用 管理员身份运行cmd,然后
regsvr32 "c:\windows\system32\TLBINF32.dll"   将其注册即可
或者下载附件,右键 以管理员身份运行cmd文件

tlbinf32DLL右键以管理员身份注册.zip (269 Bytes, 下载次数: 34)
该过程可能需要很高的权限,因此,我建议用管理员身份运行EXCEL,再打开这个表格,运行过程。尤其是批量读取的时候。






补充内容 (2020-10-10 12:02):
留个记号:如果本机没有TLBINF32.dll文件的时候,需要从网上下载,下载后不要直接扔到system32目录中,这样注册的时候会有错误。
正确的注册方式是先打开这个表格,然后打开工具----引用----浏览,在这个窗口中粘贴

补充内容 (2020-10-10 12:03):
打开表格后,在vbe窗口中引用,复制到浏览的这个的窗口。

TA的精华主题

TA的得分主题

发表于 2020-10-6 16:57 | 显示全部楼层
本帖最后由 tianying 于 2020-10-6 16:58 编辑

貌似不能,采用CreateObject方法创建对象,是后期绑定,而工程引用是前期绑定,后期绑定不需要事先在VBE中引用,所以,工程引用中没有该对象的被勾选引用的信息,得自己到工程引用里去找,或者去先去搜索,然后再到工程引用中找。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-10-7 09:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
tianying 发表于 2020-10-6 16:57
貌似不能,采用CreateObject方法创建对象,是后期绑定,而工程引用是前期绑定,后期绑定不需要事先在VBE中 ...

谢谢老师的回复,我正在尝试着寻找相关的资料。但愿能有所获。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-10-7 15:20 | 显示全部楼层
tianying 发表于 2020-10-6 16:57
貌似不能,采用CreateObject方法创建对象,是后期绑定,而工程引用是前期绑定,后期绑定不需要事先在VBE中 ...

谢谢老师的支持,已找到解决方法,且已更新帖子

TA的精华主题

TA的得分主题

发表于 2020-10-8 13:25 | 显示全部楼层
976190982 发表于 2020-10-7 15:20
谢谢老师的支持,已找到解决方法,且已更新帖子

学习了,不过我的电脑运行出错,即便是引用了“TLBINF32.Dll”,但是还是无法正常运行(环境:WIN10 64 Home+Excel2019 64 Pro)。
应该说,这个思路是可行的。
另外,我觉得直接网搜也一样吧。

TA的精华主题

TA的得分主题

发表于 2020-10-8 14:01 | 显示全部楼层
tianying 发表于 2020-10-8 13:25
学习了,不过我的电脑运行出错,即便是引用了“TLBINF32.Dll”,但是还是无法正常运行(环境:WIN10 64 H ...

是不是64位的不行,我的也是引用了也报错

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-10-8 17:47 | 显示全部楼层
tianying 发表于 2020-10-8 13:25
学习了,不过我的电脑运行出错,即便是引用了“TLBINF32.Dll”,但是还是无法正常运行(环境:WIN10 64 H ...

64位的我没有环境   没有办法测试  32的 2019  我的是,  CreateObject("Microsoft.XMLHTTP")  你可以试试这样的  看看成不成,有时候就是不能创建部件,我也很奇怪    遇到有的后期绑定对象的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-10-8 17:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
yes363001640 发表于 2020-10-8 14:01
是不是64位的不行,我的也是引用了也报错

64位的我没有环境   没有办法测试  32的 2019  我的是,  CreateObject("Microsoft.XMLHTTP")  你可以试试这样的  看看成不成,有时候就是不能创建部件,我也很奇怪    遇到有的后期绑定对象的。

TA的精华主题

TA的得分主题

发表于 2020-10-8 17:53 | 显示全部楼层
yes363001640 发表于 2020-10-8 14:01
是不是64位的不行,我的也是引用了也报错

不太清楚,我没换别的电脑,但是在WPS上测试也不行,Wps是32位的,一般情况下,Wps运行基本上没有什么问题。可能是“TLBINF32.Dll”跟64位系统兼容的问题,回头找个别的配置的电脑再试试。

TA的精华主题

TA的得分主题

发表于 2020-10-8 17:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
976190982 发表于 2020-10-8 17:47
64位的我没有环境   没有办法测试  32的 2019  我的是,  CreateObject("Microsoft.XMLHTTP")  你可以试 ...

回头换个电脑环境再试试看,这个思路是可行的。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-4 02:29 , Processed in 0.043892 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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