一直以来总是在使用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.csdn.net/download/qq_24968317/12665620 作者水平有限,出错在所难免,欢迎拍砖!至于其他对象释放之类的,自己看着办吧。 |
|