VB.net ComAddin从零开发,跟我一起造轮子,嗨起来

VB.net ComAddin从零开发,跟我一起造轮子,嗨起来

 

       一直以来总是在使用VB6comaddin,虽然用起来很顺手,但是VB6毕竟老了。于是乎有了向.net靠拢的思维。说实话,.net我也不是很喜欢,不过开发节省时间对我这种懒人还是可以的。C#VB.NET除了语法差异,对平常用来说基本一样,所以还是VB.NET吧(懒人嘛)

     来吧,跟我一起造轮子吧(虽然很多高手很鄙视造轮子,我觉得造一遍轮子对新手练练手还是很有用的。)

      VB6comaddin是引用EXCELOFFICE,然后添加对 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从零开发,跟我一起造轮子,嗨起来

    接下来添加OFFICEEXCEL引用。我一般习惯添加OFFICE14 EXCEL14 对应OFFICE2010.
VB.net ComAddin从零开发,跟我一起造轮子,嗨起来 VB.net ComAddin从零开发,跟我一起造轮子,嗨起来

    添加 Extensibility 引用(实现IDTExtensibility2 接口的)
    VB.net ComAddin从零开发,跟我一起造轮子,嗨起来
   然后开始写代码了。
VB.net ComAddin从零开发,跟我一起造轮子,嗨起来

   在connect类顶部导入命名空间:
   Imports Excel = Microsoft.Office.Interop.Excel
   Imports Extensibility
   Imports System.Runtime.InteropServices   ’
为添加GUIDProgID
   Imports Microsoft.Office.Core
   Imports Microsoft.Office.Interop.Excel

  '
添加GUIDProgID

   <Guid("CEB1CACE-BA0B-4509-9179-056186877C4B")>  'GUID自己用菜单 工具生成
  <ProgId("VB.NETComAddin.Connect")>

  
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 (具体路径自己写准确) ,注册32OFFICE用。
再次切换到  C:\Windows\Microsoft.NET\Framework64\v4.0.30319 运行上述命令,注册64OFFICE

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从零开发,跟我一起造轮子,嗨起来

附件源码打包下载:

https://download.****.net/download/qq_24968317/12665620

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