分享

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

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

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

      VB6comaddin是引用EXCELOFFICE,然后添加对 IRibbonExtensibility  IDTExtensibility2 接口的引用,然后实现接口。C#VB.NET也一样。
     打开VB2019,新建项目,选择VB ,类库(.net framework),为了兼容XP,框架选择 .net framework 4
    
    将建立项目的默认Class1类名改成 Connect ,当然也可以自己随便起名,习惯这样。



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

    

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

    接下来添加OFFICEEXCEL引用。我一般习惯添加OFFICE14 EXCEL14 对应OFFICE2010.
 

    添加 Extensibility 引用(实现IDTExtensibility2 接口的)
    
   然后开始写代码了。


   在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



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


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



当然这样还没完,显示注册成功了,你打开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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多