ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] COM加载宏封装自定义函数并全自动安装最简实例

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-5-21 22:14 | 显示全部楼层
本帖已被收录到知识树中,索引项:插件开发
不过楼主不妨也透露下思路啊。搞得我下面摸索那么辛苦~~~~~~~~

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-5-21 22:21 | 显示全部楼层

回复 33楼 fecmen 的帖子

不要说思路了,我不是连源码都给出了吗,在1楼你还没看吧。

  1. '*****************************************************************************
  2. ' FileName:            Setup.VBS
  3. '   Author:            baomaboy
  4. ' Abstract:            Excel_VBA自定义函数集安装程序
  5. '*****************************************************************************
  6. On Error Resume Next
  7. Dim WshShell,FSO
  8. Set WshSHell = WScript.CreateObject("WScript.Shell")
  9. Set FSO = CreateObject("Scripting.FileSystemObject")
  10. DllPath = FSO.GetSpecialFolder(1)
  11. intAnswer = MsgBox("【是】安装[通用工程试验函数集]到系统,"&Chr(10)&Chr(10)&"【否】卸载[通用工程试验函数集]从系统。 ", vbQuestion + vbYesNoCancel, "安装 - 通用工程试验函数集 - by baomaboy")
  12. If intAnswer = vbYes Then
  13.         For Each Process In GetObject("winmgmts:").ExecQuery("select * from Win32_Process where name='EXCEL.EXE'")
  14.                 Process.Terminate (0)
  15.         Next
  16.         FSO.GetFile("GCSY.DLL").Copy(DllPath &"")
  17.         WshSHell.Run ("regsvr32 /s " & FSO.BuildPath(DllPath,"GCSY.DLL")), vbHide
  18.         WScript.Sleep 1365
  19.         dim oXL
  20.         Set oXL = CreateObject("Excel.Application")
  21.         oXL.Workbooks.Add
  22.         Set oAddin = oXL.AddIns.Add("工程试验.SYHS", True)
  23.         oAddin.Installed = True
  24.         oXL.Quit
  25.         Set oXL = Nothing
  26.         WshSHell.popup vbcr & vbcr & "安装  通用工程试验函数集  完成......", 5, "安装成功 - 通用工程试验函数集 - by baomaboy", 0 + 64
  27. end if
  28. If intAnswer = vbNo Then
  29.         WshSHell.Run ("regsvr32 /s /u " & FSO.BuildPath(DllPath,"GCSY.DLL")), vbHide
  30.         WScript.Sleep 1365
  31.         FSO.DeleteFile(FSO.BuildPath(DllPath,"GCSY.DLL"))
  32.         WshSHell.popup vbcr & vbcr & "卸载  通用工程试验函数集  完成......", 5, "卸载成功 - 通用工程试验函数集 - by baomaboy", 0 + 64
  33. end if
  34. If intAnswer = vbCancel Then
  35. end if
  36. Set WshSHell = Nothing
  37. Set FSO = Nothing
  38. Set oXL = Nothing
  39. WScript.Quit(0)
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-5-21 22:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

回复 33楼 fecmen 的帖子

不是已经自动化了吗?怎么会“但离自动化差那么一步”?
关键就那么两句,要不在加上注释:

Set oAddin = oXL.AddIns.Add("工程试验.SYHS", True)'''相当于手动在自动化服务里寻找并添加到加载宏列表
oAddin.Installed = True'''相当于手动在加载宏列表里勾选

有没有觉得和你32楼链接百度空间的例子相似啊。

到此本贴已经完成了标题所述(COM加载宏封装自定义函数并全自动安装)的全部过程:
1、附件_自定义函数封装最简示例.rar (以VB源码的形式完整封装了一个例子“范围随机数”自定义函数,其实加添一句做成易失性函数更合适)
2、附件_自定义函数安装最简示例.rar (封装完了就涉及应用了,总不能每每手动去加载吧,多不专业!又是源码,VBS、你可以任意改VBA或VB,我自己用的VB)
3、附件_函数安装自动化实例.rar (一个DLL搭配一个VBS安装多不专业,好,用winrar将dll和vbs合成一个setup.exe有没有点专业的意思?如果你觉得winrar还不专业你可以去用Inno Setup 、 NSIS 做)

另外关于两个不公开大家就不要再说什么“楼主不厚道”“本来很简单的东西,越弄越复杂,很是无聊”之类的话了,去“原创发表”版看看,包括几个置顶贴有几个是以VBA形式出现的,同样都是“不公开”,也许只是“不公开”的理由各不相同。其实无论作为分享者或被分享者用对了心态最重要,我求助别人时别人指点我我说非常感谢,别人不指点,我自己替别人找理由,那就是人家没有义务必须指点我。

[ 本帖最后由 baomaboy 于 2011-5-22 00:33 编辑 ]

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-5-22 01:23 | 显示全部楼层
原帖由 fecmen 于 2011-5-21 22:12 发表 [url=http://club.excelhome.net/redirect.php?goto=findpost&pid=4899155&ptid=701984][img]
20楼的代码已经能成功注册,但离自动化差那 ...

说实话这段代码这是我第一次见,刚才测试了一下没成功啊,msgbox了一下函数返回的是个数值453,什么意思?是注册成功了,还是错误值?

如果注册成功指的是只实现了regsvr32 GCSY.DLL的效果,加载到宏列表中还要其他代码的话,那用这么多句替换一句regsvr32 GCSY.DLL就不值得了吧。

谢谢 fecmen 不管是简单了还是复杂了 都是一种新方法

[ 本帖最后由 baomaboy 于 2011-5-22 01:32 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-5-22 13:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-5-22 14:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我得附件excel如何自动引用textqs.dll

新建文件夹.rar

41.59 KB, 下载次数: 132

TA的精华主题

TA的得分主题

发表于 2011-5-23 09:15 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-5-23 09:39 | 显示全部楼层
谢谢楼主分享源码。不过我用20楼思路的确实现了与你相同的功能。因程序不在此电脑上不便上传,回头附上。是你的程序漏了马脚给了我灵感。建议做成Excel打开与否都能安装,另发现你的程序有时在此处注册了,换个地方注册时容易出问题。你的安装程序Install.exe是否还捆绑了其他程序呢?

[ 本帖最后由 fecmen 于 2011-5-23 09:42 编辑 ]

TA的精华主题

TA的得分主题

发表于 2011-5-23 09:55 | 显示全部楼层
另你的Istall.exe用到了vbs了吗?运行时有闪屏的现象,我的exe中的注册功能大部分用API函数实现的。当然外加另外两句代码

[ 本帖最后由 fecmen 于 2011-5-23 09:57 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-5-23 09:59 | 显示全部楼层

回复 40楼 fecmen 的帖子

建议做成Excel打开与否都能安装

这是分清况的,如果从未安装过的情况下本来就是excel打开与否都能安装,但入果安装过的情况下,excle打开的话会一直加载dll你根本不能安装,这是微软的安全机制,任何人包括微软自己也避不开,你更新软件或杀毒软件更新时为什么要求你重启计算机才能完成更新?这个是避不开的,如果我不结束excle,我怎么替换正被它调用的dll文件?
你的安装程序Install.exe是否还捆绑了其他程序呢?

你试试用VB在窗体里写几行代码后文件就够30k了,我哪有空间去捆绑其他程序啊。

[ 本帖最后由 baomaboy 于 2011-5-23 10:06 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 02:48 , Processed in 0.047255 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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