ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 那些神奇的Set A = CreateObject(" ")的用法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-11-18 22:56 | 显示全部楼层 |阅读模式
本帖最后由 鑫尼达 于 2022-11-18 23:10 编辑

最先接触的可能是字典,在很多场景下配合数组使用可以提高代码运行效率和解决一些疑难问题.

  1. Set d = CreateObject("Scripting.Dictionary")
复制代码

然后是ADO,在Excel中用sql处理数据 ,一下子让我从此入门了数据库的殿堂
  1. Set conn = CreateObject("ADODB.Connection")
复制代码


然后是fso,Excel可以和硬盘里的文件文件夹连接互动起来,做的程序可以更自动化了.
  1. Set fso = CreateObject("Scripting.FileSystemObject")
复制代码

这些神奇的Set A = CreateObject(" ")的用法,时不时的出现在各位大佬的代码里面,
帮助我提高了工作效率,解决了一个个疑难杂症,当然也让我在"写代码"的邪路(相对自己的主业来说)上越陷越深.


然而大多数时候,我只是在复制粘贴大佬们的代码,然后稍微改改拿来用.
括号里面的那一串英文字符从来也不知道咋读也没记住咋拼写,也没有去研究过到底是什么意思有什么作用.


直到最近又看到几个大神的代码,
如何用程序批量给图片加LOGO
怎么批量将文件夹内的图片切除图片下方的一部分(35%)?


  1. Set img = CreateObject("WIA.ImageFile")
  2. Set IP = CreateObject("WIA.ImageProcess")
复制代码

竟然可用Excel裁剪和拼接图片.

这简直太神奇了!!!!

然后我突然意识到,这些方法可能有某些共性特点,
就我粗浅的理解,这些用法好像都是创建一种特定类型的对象,这个对象有它自己的属性,和操作方法.
利用这些对象的属性方法,可以解决一个个原本Excel不能解决的问题.
而且好像这些对象,都是可以通过VBE里面的工具-引用菜单里面勾选一些选项来实现.
而工具-引用里面貌似有无数的选项可以勾选.

那么,到底还有哪些CreateObject的对象的用法?
这些用对象都可以解决什么类型的问题?
该怎么系统的学习这些用法?


求大神们不吝分享,慷慨相授,给大家留下你们宝贵的经验心得.


一句话,一个关键词指个路,后学们将感激不尽,如果能提供附件或者帖子链接举例说明则善莫大焉!



TA的精华主题

TA的得分主题

发表于 2022-11-20 20:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
帮顶,期待大神出来指导

TA的精华主题

TA的得分主题

发表于 2022-11-20 20:49 | 显示全部楼层
我也有同问,也在四处查找相关的内容。据我所知,可以使用对象浏览器来查看。但是貌似不太直观,不好用。是否有一个大全类的学习资料以便在使用时查找。望高手们不吝赐教。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-12-22 22:11 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-23 21:31 来自手机 | 显示全部楼层
lss001 发表于 2022-12-22 22:11
https://club.excelhome.net/forum.php?mod=viewthread&tid=1320374&extra=page%3D1

搞得太高深了

TA的精华主题

TA的得分主题

发表于 2022-12-26 12:10 来自手机 | 显示全部楼层
本帖最后由 lss001 于 2022-12-27 15:59 编辑

Sub 枚举系统中所有COM对象()
    Const HKEY_CLASSES_ROOT = &H80000000
    Dim arrProgID, strProgID, objReg
    Set objReg = GetObject("winmgmts:\\.\root\default:StdRegProv")
    objReg.EnumKey HKEY_CLASSES_ROOT, "", arrProgID

    For Each strProgID In arrProgID
        If Left(strProgID, 1) <> "." Then
            i = i + 1
            Cells(i, 2) = strProgID
        End If
    Next
    Cells(1, 2) = "系统COM对象"
End Sub

TA的精华主题

TA的得分主题

发表于 2022-12-26 12:13 来自手机 | 显示全部楼层
本帖最后由 lss001 于 2022-12-26 16:09 编辑

********************************
注意:系统部分对象VBA不可用

TA的精华主题

TA的得分主题

发表于 2022-12-26 13:53 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-12-26 17:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lss001 发表于 2022-12-22 22:11
https://club.excelhome.net/forum.php?mod=viewthread&tid=1320374&extra=page%3D1

64位的EXCEL,运行不下去~~要改数据类型不太懂
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-13 06:27 , Processed in 0.040917 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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