|
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
在VBA中 Createobject函数可以创建并返回一个对ActiveX对象的引用,这样说比较拗口,可以说通俗点,CreateObject函数可以创建一个类对象,
例如:
Dim dic As ObjectSet
Set dic = CreateObject("Scripting.Dictionary")
那么,为什么在CreateObject参数里面加上"Scripting.Dictionary",它能创建一个字典对象呢?这是因为微软在编译 scrrun.dll 这个文件的时候,将字典对象打了一个"Scripting.Dictionary"标记,这样注册完scrrun.dll
之后,会向注册表HCR里面写入一个以"Scripting.Dictionary"为项的记录,然后在VBA执行CreateObject("Scripting.Dictionary")之后,它能根据这个字符串找到字典对象的ProgId,然后顺利创建对象
打开注册表编辑器----编辑---查找---输入 Scripting.Dictionary ,勾选项,查找会找到以下记录
注册表信息清楚的记录了Scripting.Dictionary对应的 CLSID值为 EE09B103-97E0-11CF-978F-00A02463E06F 实际上,我们完全可以用这个CLSID创建一个字典对象,比如以下代码
因为CLSID太长不便记忆,所以,一般在COM对象里面,都会打上一个字符串,便于书写使用
就像楼主提出的问题,CreateObject里面的参数如何确定,其实,这个字符串参数是应用开发者自己打上的标记,你可以使用这个标记来创建COM对象,熟悉C# 的朋友都知道,在我们用c#开发COM的时候,一般都会打上这个标记,
比如我之前做的那个发送微信消息的工具,里面就有一段代码
上述代码编译成dll并注册之后,GUID就是类对象的唯一CLSID,同时我打上了一个"WeChatTool.WeChatClass"标记之后,VBA里面如果要引用这个工具,可以使用 CreateObject("WeChatTool.WeChatClass") 来创建消息发送对象了,对象创建成功,就能调用里面的方法了
上述只是我个人浅薄的解析,如有不当之处 ,还望指正
|
评分
-
2
查看全部评分
-
|