ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[原创] to: 守柔版主,也谈VB6环境下编写Word加载项问题的解决

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-12-16 22:36 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
也谈VB6环境下编写Word加载项问题的解决
我在搜索中的vb6 与 COM加载项学习之路

我的COM加载项学习较早,正如我的Excel的vba学习一样,就是被他吸引,做一个自己觉得实用的小工具。所以没有什么系统的学习,遇到问题就用baidu搜索,当然有时候在excelhome论坛搜索。解决问题就谢天谢地。现在发现,网络搜索喜欢开玩笑,他把对的错的好的坏的都呈现给我们,我们能分辨吗?
第一集 熟路走到死胡同。
拜读两次了守柔版主的“我的第一个COM加载项习作”,第一次我没有太在意,因为他是用vb.net而我使用的是vb6.0。当我做我的“word朗读工具栏”,想在word中自定义菜单时,菜单竟然无效,终于没有了出路,再次搜索加载项相关的文章。有缘再次拜读该贴。就想了能否移植过来在vb6.0中使用。就以帖子中的“Implements IDTExtensibility2”作为关键字进行baidu搜索,随着阅读搜索的文章的增加,一个念头出现在脑海,难道那么多年竟然上错了贼船?
第二集 原来存在两条路!
这些文章综合在一起,表明vb6环境下office加载项的编写,竟然有两条路:
两条路共同点就是使用新建对话框中“外接程序”新建工程。不同点在于:
第一条、引用Implements IDTExtensibility2接口,使用Implements IDTExtensibility2对象事件,如: 守柔版主帖子“我的第一个com加载项”和文章:用VB创建MS Office的COM加载项
第二条、不引用Implements IDTExtensibility2接口,直接使用外接程序自带的AddinInstance对象事件,如文章: 使用VB6编写COM加载项

第三集 只怪当初入错门?
最初的加载项入门学习的资料,因为电脑硬盘的更换而无从找到了,模糊有点印象,就是好像曾注意到有以上两种方法,对于他们的区别没有放在心上。而且记得当时在网上找到了大侠 墨伯 的com加载项模板,但也不知道它用的是哪一种。还有一篇台湾的高手的繁体字文章……
可惜后来不知不觉之中我选择的是第二种方法。在excel中没有发现不妥,在制作word加载项,就是上面提到的我一个“word文本到语音工具栏”时发现了问题,首先是工具栏只对刚打开的文档有效,后来竟然自鸣得意的宣布了解决办法,即把工具栏的建造放在文档改变事件(DocumentChange事件)中,这样每次改变活动文档都重新建造工具栏,当然可以使用了。到了最近,想对工具栏进行改进,竟然想模仿excel的文本到语音工具栏,何不也学习它在工具菜单中加入自定义按钮来显示/隐藏工具栏?就发现了文章开头的情况。
第四集 回望灯火阑珊处。
仔细研究守柔版主的帖子,在vb6.0中尝试还原出来源码,终于成功,原来就是上面的第一中方法,只是版主没有说明vb6环境的情况,测试成功,源码附于后面。问题终于解决了。
注:下面的文字写于以上文字两日后,因为上面的文字写好以后就想放到论坛讨论,不料测试中发现了不少问题,必须按照版主的帖子建立对象,想建立别的自己的按钮却时有不灵,就多了个心眼,难道前面的参悟又是一场空?
大结局 绝知此事要躬行
根据前面的分析,可以看出导致Word加载项中自定义工具栏按钮只对第一个打开的文档有效,及自定义菜单无效的原因,是因为编写程序使用的对象接口不同?经过两天的反复试验,发现结论却超乎寻常的简单:与上面的说发并没有关系,只是在于自定义按钮或菜单项(也相当于按钮)的tag属性,我们往往忽略了这个小家伙,而Word却似乎非常看重它,抑或是微软的小把戏?简单的说,只要随便设置了按钮的tag这个属性,就解决了上面所述的两大问题。使用vb6自带的AddinInstance对象建立的加载项照样可以成功!感慨万千:为什么没有人直接介绍Word加载项的编写方法,版主解决了问题但没有说明解决的要领。搜索引擎可以提供资料,但对于Word加载项出现这样特殊的情况,还需要我们自己去解决。
这是我最新改进的Word从文本到语音工具栏,欢迎提出宝贵意见http://blogimg.chinaunix.net/blog/upfile2/081226113747.rar


[ 本帖最后由 wjhere 于 2009-4-6 17:22 编辑 ]

守柔版主的加载项vb6源码.rar

12.33 KB, 下载次数: 689

守柔版主的加载项vb6源码.rar

TA的精华主题

TA的得分主题

发表于 2008-12-17 08:21 | 显示全部楼层
我也是一样的学习方法啊————没有什么系统的学习,遇到问题就用baidu搜索,当然有时候在excelhome论坛搜索。解决问题就谢天谢地。

最近也再想弄word加载项。没有人系统的讲解

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-3-16 07:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
版主过誉了,当时可能您真的很忙,短信没有联系上。谢谢提拔,继续努力。

TA的精华主题

TA的得分主题

发表于 2009-3-16 06:30 | 显示全部楼层
原帖由 wjhere 于 2008-12-16 22:36 发表
也谈VB6环境下编写Word加载项问题的解决
我在搜索中的vb6 与 COM加载项学习之路

我的COM加载项学习较早,正如我的Excel的vba学习一样,就是被他吸引,做一个自己觉得实用的小工具。所以没有什么系统的学习,遇到 ...

罪过!
2008-12-16日左右我在干什么?现在想不起来了。楼主的这份执著,更甚于我。
我已将其评为精华。

TA的精华主题

TA的得分主题

发表于 2009-3-25 12:56 | 显示全部楼层
谢谢分享,一定要向你们学习!

TA的精华主题

TA的得分主题

发表于 2009-3-26 12:01 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-4-4 00:58 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-4-5 12:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-4-22 10:32 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2009-5-20 21:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
[quote]原帖由 守柔 于 2009-3-16 06:30 发表

2008-12-16日左右我在干什么?现在想不起来了。

http://club.excelhome.net/viewthread.php?tid=304951&highlight=com   10楼
2008-3-15 左右守兄在干什么?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-28 04:59 , Processed in 0.042261 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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