VB.net ComAddin从零开发,跟我一起造轮子,嗨起来
VB.net ComAddin从零开发,跟我一起造轮子,嗨起来
一直以来总是在使用VB6写comaddin,虽然用起来很顺手,但是VB6毕竟老了。于是乎有了向.net靠拢的思维。说实话,.net我也不是很喜欢,不过开发节省时间对我这种懒人还是可以的。C#、VB.NET除了语法差异,对平常用来说基本一样,所以还是VB.NET吧(懒人嘛)
来吧,跟我一起造轮子吧(虽然很多高手很鄙视造轮子,我觉得造一遍轮子对新手练练手还是很有用的。)
VB6写comaddin是引用EXCEL、OFFICE,然后添加对 IRibbonExtensibility 、IDTExtensibility2 接口的引用,然后实现接口。C#和VB.NET也一样。
打开VB2019,新建项目,选择VB ,类库(.net framework),为了兼容XP,框架选择 .net framework 4。
将建立项目的默认Class1类名改成 Connect ,当然也可以自己随便起名,习惯这样。
选择项目属性,设置调试 ,启动外部程序,浏览到计算机里面安装的EXCEL.EXE 路径
项目属性里面 签名,随便新增一个签名。
接下来添加OFFICE和EXCEL引用。我一般习惯添加OFFICE14 ,EXCEL14 对应OFFICE2010.
添加 Extensibility 引用(实现IDTExtensibility2 接口的)
然后开始写代码了。
在connect类顶部导入命名空间:
Imports Excel = Microsoft.Office.Interop.Excel
Imports Extensibility
Imports System.Runtime.InteropServices ’为添加GUID和ProgID
Imports Microsoft.Office.Core
Imports Microsoft.Office.Interop.Excel
'添加GUID和ProgID
<Guid("CEB1CACE-BA0B-4509-9179-056186877C4B")> 'GUID自己用菜单 工具生成
<ProgId("VB.NETComAddin.Connect")>
在Connect类 实现接口
Implements IRibbonExtensibility
Implements IDTExtensibility2
然后红线报错,提示必须为接口实现。分别实现上述接口。
删除所有的 Throw New NotImplementedException()
至此,一个空架子都搭起来了。程序入口就是 OnConnection ,程序结束就是OnDisconnection。
在OnConnection 里面随便写一句 MsgBox("VB.NETComAddin 你好 " & now() )
添加一个资源文件,字符串 rb ,值为一个ribbon xml(不会写?论坛上有很多ribbon教程,我随便丢一个进去测试用,具体看源码)
在 GetCustomUI方法(函数)里面添加一句 GetCustomUI = My.Resources.Resource1.rb 就是得到刚才添加的ribbon菜单字符串
添加一个SUB ,名称对应ribbon xml里面的 onAction 名称
Public Sub runribbon(Control As IRibbonControl)
MsgBox(Control.Id) ‘显示点击的按钮ID
End Sub
好吧,就这样, 一个最简单的comaddin就搭建起来了。
项目右键,生成,然后在文件资源管理器中打开,找到bin ,debug文件夹 ,找到生成的 VB.NETComAddin.dll 文件,复制到 windows/system32 (32位系统) 或者 windows/syswow64 (64位系统)文件夹里面
然后开始菜单栏,附件里面 找到 CMD命令,右键以管理员身份打开,切换到 C:\Windows\Microsoft.NET\Framework\v4.0.30319 运行命令,
regasm.exe /codebase c:/windows/syswow64/vb.netcomaddin.dll (具体路径自己写准确) ,注册32位OFFICE用。
再次切换到 C:\Windows\Microsoft.NET\Framework64\v4.0.30319 运行上述命令,注册64位OFFICE用
当然这样还没完,显示注册成功了,你打开EXCEL却看不到,因为还有注册表要写入。新建一个文件文件,写入如**册表项目:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\EXCEL\Addins\VB.NETComAddin.Connect]
"FriendlyName"="VB.NETComAddin"
"Description"="VB.NETComAddin"
"LoadBehavior"=dword:00000003
"CommandLineSafe"=dword:00000001
[HKEY_CURRENT_USER\Software\Kingsoft\Office\ET\AddinsWL]
"VB.NETComAddin.Connect"=""
另存,后缀名改成 reg文件。双击添加进电脑。
至此全部完成,打开EXCEL会看到如下效果。
点击菜单 运行效果:
附件源码打包下载:
https://download.****.net/download/qq_24968317/12665620
作者水平有限,出错在所难免,欢迎拍砖!至于其他对象释放之类的,自己看着办吧。