文章 / 公众号历史文章
『Excel进化岛精华曝光』 VSTO插件开发的撤销功能实现
在《Excel进化岛》知识星球里,笔者平均一天会发布2 5个主题,一些短小精悍的小知识分享,最近分享较多的是动态数组公式和VBA零散主题。 在笔者开发插件5年多里,没有做过插件功能撤销功能,最大的原因是觉得很没必要。 只要保证插件功能不破坏用户原有数据,就算错了,重来一次即可。不破坏原数据,其实最好
在《Excel进化岛》知识星球里,笔者平均一天会发布2-5个主题,一些短小精悍的小知识分享,最近分享较多的是动态数组公式和VBA零散主题。
在笔者开发插件5年多里,没有做过插件功能撤销功能,最大的原因是觉得很没必要。
只要保证插件功能不破坏用户原有数据,就算错了,重来一次即可。不破坏原数据,其实最好的方案是用自定义函数实现,如果需要用按钮功能,只需要将生成的新数据写入到新工作表或新区域即可。Excel催化剂大量的功能遵循此原则来处理。
当然很多用户很想要,在做定制开发时,客户要的都是合理的,给过钱买服务,要做就做呗。
翻阅了一下互联网的分享,深入分享的并不多,可能时代变了,大家都包装成付费知识来私域分享了。
找到ICells插件作者的两篇分享,还不错,可以了解下原理。
https://www.cnblogs.com/iCells/articles/16691392.html
https://www.cnblogs.com/iCells/articles/16694342.html
其实上面文章,也只是搬运微软官方文档为主,可以看下原出处,这些演练的文档还不错,如果看懂了,就是一个小demo。
当然自己手动写代码,只要某一小段没理解到,就失败告终,所以最佳的方式是有一个完整的demo项目可以下载学习,更高效。
笔者现在大量的分享,特别是带示例案例分享,都转移到了知识星球,想高效深入学习,可以进来看看。本文的demo示例已经分享在其中了。 https://t.zsxq.com/0bLAZMgc0
上面的VSTO实现撤销功能,本质上是VSTO开放接口给外部VBA语言来调用,但如果使用ExcelDNA框架开发,并不需要这么麻烦,项目中还要带一个xlam文件来实现撤销。
ExcelDNA除了开发自定义函数最有效,想开发撤销功能,直接在项目里写代码即可,OnAction的属性,可以直接调用ExcelDNA里的代码。
例如笔者在Excel催化剂插件中实现的一些鼠标右键功能,也是一个套路,这部分的功能,其实是在【自定义函数.xll】文件里开发完成的。


公众号写文章太正式,很多精彩内容就没有搬到公众号里发表,知识星球的学习、互动体验更好,还可以下载附件立刻练习。
喜欢这样的学习、提问环境的,可以加入Excel进化岛知识星球,一起学习成长,众多大伽老师陪你一起进步。
