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