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。

VB.NET 写ComAddin

将建立项目的默认Class1类名改成 Connect ,当然也可以自己随便起名,习惯这样。

VB.NET 写ComAddin

选择项目属性,设置调试 ,启动外部程序,浏览到计算机里面安装的EXCEL.EXE 路径

VB.NET 写ComAddin

项目属性里面 签名,随便新增一个签名。

VB.NET 写ComAddin

接下来添加OFFICE和EXCEL引用。我一般习惯添加OFFICE14 ,EXCEL14 对应OFFICE2010.

VB.NET 写ComAddinVB.NET 写ComAddin

添加 Extensibility 引用(实现IDTExtensibility2 接口的)

VB.NET 写ComAddin

然后开始写代码了。

VB.NET 写ComAddin

在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自己用菜单 工具生成

在Connect类 实现接口

Implements IRibbonExtensibility

Implements IDTExtensibility2

VB.NET 写ComAddin

然后红线报错,提示必须为接口实现。分别实现上述接口。

VB.NET 写ComAddin

删除所有的 Throw New NotImplementedException()

至此,一个空架子都搭起来了。程序入口就是 OnConnection ,程序结束就是OnDisconnection。

在OnConnection 里面随便写一句 MsgBox("VB.NETComAddin 你好 " & now() )

添加一个资源文件,字符串 rb ,值为一个ribbon xml(不会写?论坛上有很多ribbon教程,我随便丢一个进去测试用,具体看源码)

VB.NET 写ComAddin

在 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用

VB.NET 写ComAddin

当然这样还没完,显示注册成功了,你打开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会看到如下效果:

VB.NET 写ComAddin

点击 菜单栏运行 效果:

VB.NET 写ComAddin

作者水平有限,出错在所难免,欢迎拍砖!至于其他对象释放之类的,自己看着办吧。

文章不能带下载链接,需要源码请私聊作者。


分享到:


相關文章: