https://www.cnblogs.com/Charltsing/p/VBEAddins.html

QQ:564955427

8月8日测试版功能说明
1、VBE菜单的创建
2、toolwindow的创建及消息监听
3、识别宿主及版本
4、解决非托管资源释放问题
5、Inno Setup安装脚本代码
 
VBE插件是Com Addins的一种,由于此插件可以在任何使用标准VBA代码窗口的软件中使用(例如Office,WPS,AutoCAD,CorelDraw等),所以叫做VBA Editor Addins。此次的众筹模板实现了开发VBE插件的最基本的几个功能,代码近千行,为目前国内首个完整公开源代码的插件模板。
 
VBE插件与VSTO写的所谓vbe插件不同,前者无需信任工程,也无需vsto运行库的支持。
本插件为C#语言开发,同时支持32位和64位 Office等宿主程序。
本插件在VS2017+.NET Framework4.0测试通过。
 
本次众筹的起因是为了推广插件开发技术,希望能够在众筹人员的监督下尽快的完成插件的模板开发。如果没有众筹,也就没有VBE插件模板开发这回事。目前众筹模板的测试版已经开发完毕,但仅在参与众筹的第一批开发者中共享代码,欢迎想学习Com开发技术的童鞋加入众筹。为确保代码不会外流成为某些人的谋利工具,参与众筹的台阶相对较高,请大家谅解。
 
如果大家对VBE插件有什么模板功能要求,无论是否参与众筹,都可以在帖子里面留言以便让开发者尽快了解需求。
 
想参与众筹的QQ与我联系,谢谢支持。
 
VBE Demo插件的菜单界面,如下图(包括CommandBar、CommandBarPopup、CommandBarButton、CommandBarComboBox等)
 
 

上图是CommandBarControl.Click事件封装之后的回调代码
这种封装有两个好处:
1、所有按钮的Click事件都被订阅在同一个函数回调里面,可以通过简单的case分支判断执行,不需要写一大堆click回调函数了。
2、方便资源的释放,统一在CommandBarControlEventHelper类里面实现对事件的管理。

*********************************************************************************

8月9日补记:

今天有人问我这个模板和网上其他人发的那些几十行的例子有什么区别?

这个区别简单的说就是sample和template的区别,也就是例子和模板。前者只是简单的代码示例,后者是真正的商业开发代码。我写的是真正的template,大约近千行代码,涉及的功能不是几十行的sample所能展示的。

对学习C#插件开发的人来说template里面涉及到的singleton模式、IDispose接口、tool window、native window listener、unmanaged com资源释放等等,都是office插件开发涉及到的一些中级技术,不是随便买本书就能抄到的代码。

最后再说一下,写一个VBE插件并不是实现IDTExtensibility2就可以万事大吉了,一个真正的插件涉及到的安装脚本、调试方法、UI界面、com资源管理及释放、快捷键、错误处理等等都是新人在插件开发必经之路中的拦路虎,无论你是搞automation addin、 com addins、xll 还是vsto,这些问题都无法回避,而一个完善的模板,可以让你的插件开发从起跑线就开始遥遥领先。

最后,感谢各位在测试期间的众筹支持,感谢大家,没有你们的支持,这个项目是不能如此之快得与大家见面,谢谢!

众筹说明

VBA Editor Addins --> VBE插件模板开发众筹的更多相关文章

  1. 使用 WordPress 插件模板开发高质量插件

    WordPress 插件样板是标准化的,有组织的,面向对象的基础,用于构建高品质的 WordPress 插件.样板遵循编码标准和文件标准,所以你不必自己学习这些,根据注释编写代码即可. 官方网站    ...

  2. Smart Indenter for VBE(64bits smart indent addin for VBA Editor),VBA开发必备的智能排版工具。

    原始出处:www.cnblogs.com/Charltsing/p/SmartIndenter64.html 作者QQ: 564955427 最近更换电脑,改用64位office做开发.VBA代码美化 ...

  3. 从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板

    标题:从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11155 ...

  4. Create a toolwindow for the VBA editor with .NET(C#).

    原始出处:http://www.cnblogs.com/Charltsing/p/VBEtoolwindow.html 最近有人问起使用C#在VBE插件中创建toolwindow的事情,由于VBE窗口 ...

  5. NET 平台下的插件化开发内核

    .NET 平台下的插件化开发内核(Rabbit Kernel)   每个程序猿都有一个框架梦,曾经在2013年8月15日写过一篇“Koala Framework是什么?我为什么要写这个框架?”的文章, ...

  6. IDEA插件(Android Studio插件)开发示例代码及bug解决

    IDEA插件(Android Studio插件)开发示例代码及bug解决 代码在actionPerformed方法中,有个AnActionEvent e 插件开发就是要求我们复写上述的这个方法即可,在 ...

  7. BeatSaber节奏光剑插件开发官方教程1-创建一个插件模板

    原文:https://wiki.assistant.moe/modding/intro 一.简介 Beat Saber 开发环境:unity2018.C#..NET framework 4.6. 此教 ...

  8. 从零开始实现ASP.NET Core MVC的插件式开发(一) - 使用ApplicationPart动态加载控制器和视图

    标题:从零开始实现ASP.NET Core MVC的插件式开发(一) - 使用Application Part动态加载控制器和视图 作者:Lamond Lu 地址:http://www.cnblogs ...

  9. 从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件

    标题:从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/112 ...

随机推荐

  1. Fiddler无法正常抓取谷歌等浏览器的请求_解决方案

    1-先了解Fiddler工作原理: 正常情况下,fiddler是可以抓chrome的请求的. fiddler会自动给浏览器设置一个代理127.0.0.1端口8888,并且记忆浏览器的代理设置,所有的请 ...

  2. 微信小程序异步请求问题

    微信小程序为了提高用户体验,提供的api大部分都是异步操作,除了数据缓存操作里面有一些同步操作.是提高了用户体验,但是在开发的时候, 就有点坑了,例如我要写一个公共方法,发起网络请求,去后台去一些数据 ...

  3. wepy框架自定义组件编译报错not Found File XXX.wxss

    今天在自己写wepy框架组件的时候编译后报错not Found File XXX.wxss 我去,当时我很难受啊,调用组件时结构和逻辑都正常,一写样式就原地爆炸 解决之路:1.先打开编译后的dist文 ...

  4. 【面向对象设计原则】之单一职责原则(SRP)

    单一职责原则是面向对象原则五大原则中最简单,也是最重要的一个原则, 他的字面定义如下: 单一职责原则(Single Responsibility Principle, SRP): 一个类只负责一个功能 ...

  5. 安卓开发:UI组件-Button和EditText

    2.3Button Button继承自TextView,除了通过属性设置按钮样式,还可以通过绑定drawable文件的方式来实现不同样式. 2.3.1按钮样式 新建Activity:ButtonAct ...

  6. C++ 文件操作(简易的学籍管理系统)

    这是一个简易的学籍管理系统,大一时居然三个人写了一千多行......年少无知啊!欢迎摘果实! 1 #include <iostream> #include <fstream> ...

  7. 使用VBScript 脚本 开机播放声音

    前言:环境Window 10 第一步写一个 VBScript 脚本 新建一个文本文档,将下面的代码复制到文本文档中,Ctrl+S保存 将文本文档的.txt 后缀 改为.vbs即可 最后,双击这个 vb ...

  8. Python XML解析之ElementTree

    参考网址: http://www.runoob.com/python/python-xml.html https://docs.python.org/2/library/xml.etree.eleme ...

  9. Linux 匿名页的反向映射

    我们知道LINUX的内存管理系统中有"反向映射"这一说,目的是为了快速去查找出一个特定的物理页在哪些进程中被映射到了什么地址,这样如果我们想把这一页换出(SWAP),或是迁移(Mi ...

  10. Server 2008 R2多用户远程桌面连接授权,解决120天过期问题

    在工作中,我们往往需要远程服务器,经常会遇到以下这两个麻烦事. 一.远程桌面的连接数限制,超出系统就会提示超过连接数. 二.远程桌面连接时,同一个用户不能同时远程2个桌面连接. ----------- ...