VSTO中的自定义功能区和自定义任务窗格需要用到各种命名空间、添加所需文件,才能实现。后来我发现可以把所有代码都写在ThisAddin.vb这个默认文件中。

大家可以在Visual Studio中创建一个外接程序项目,然后把ThisAddin.vb中的代码整体替换为下面我贴的这个代码。然后启动调试,就可以看到自定义功能区和任务窗格了。

 Imports Microsoft.Office.Core
Public Class ThisAddIn Private Sub ThisAddIn_Startup() Handles Me.Startup
CreateCTP()
End Sub Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
DisposeCTP()
End Sub
Protected Overrides Function CreateRibbonExtensibilityObject() As IRibbonExtensibility
Return New Ribbon1()
End Function
End Class <System.Runtime.InteropServices.ComVisible(True)>
Public Class Ribbon1
Implements IRibbonExtensibility
Public R As IRibbonUI
Public Function GetCustomUI(RibbonID As String) As String Implements IRibbonExtensibility.GetCustomUI
Dim xml As XElement
xml = <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="OnLoad">
<ribbon startFromScratch="false">
<tabs>
<tab id="Tab1" label="RibbonXmlEditor">
<group id="Group1" label="Author:ryueifu">
<button id="Button1" label="CTP" imageMso="C" onAction="Button1_Click"/>
<button id="Button2" label="UnLoad" imageMso="U" onAction="Button2_Click"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Return xml.ToString()
End Function
Public Sub OnLoad(ribbon As IRibbonUI)
R = ribbon
R.ActivateTab(ControlID:="Tab1")
End Sub
Public Sub Button1_Click(control As IRibbonControl)
ctp.Visible = Not ctp.Visible
End Sub
Public Sub Button2_Click(control As IRibbonControl)
Dim ThisCOM As COMAddIn
ThisCOM = Globals.ThisAddIn.Application.COMAddIns.Item(Index:=My.Application.Info.AssemblyName)
ThisCOM.Connect = False
End Sub
End Class Public Module Module1
Public uc As System.Windows.Forms.UserControl
Public ctp As Microsoft.Office.Tools.CustomTaskPane
Public Sub CreateCTP()
uc = New Windows.Forms.UserControl
ctp = Globals.ThisAddIn.CustomTaskPanes.Add(control:=uc, title:="CTP")
With ctp
.DockPosition = MsoCTPDockPosition.msoCTPDockPositionRight
.Visible = True
End With
End Sub
Public Sub DisposeCTP()
ctp.Dispose()
End Sub
End Module

VSTO外接程序项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【VB.Net版】的更多相关文章

  1. VSTO外接程序项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【C#版】

    VSTO中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在ThisAddin.cs这个默认文件中. 大家可以在Visual Studio中创建 ...

  2. Excel-DNA项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【C#版】

    Excel-DNA项目中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在Class1.cs这个默认文件中. 大家可以在Visual Studi ...

  3. Excel-DNA项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【VB.Net版】

    Excel-DNA项目中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在Class1.vb这个默认文件中. 大家可以在Visual Studi ...

  4. Web 应用程序项目与 Visual Studio 中的网站项目的异同

    要查看英语原文,请勾选“英语”复选框.也可将鼠标指针移到文本上,在弹出窗口中显示英语原文. 翻译 英语 本文档已存档,并且将不进行维护. Web 应用程序项目与 Visual Studio 中的网站项 ...

  5. 使用 Visual C# .NET 生成 Office COM 外接程序

    Microsoft Office XP 和 Microsoft Office 2003 都支持一种新的统一的设计结构,这种结构用于生成应用程序外接程序以增强和控制 Office 应用程序.这些外接程序 ...

  6. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

  7. (转) VS2010 Addins 外接程序(插件)开发

    http://www.cnblogs.com/Leo_wl/archive/2013/03/21/2973886.html VS2010 Addins 外接程序(插件)开发 阅读目录 VS2010 A ...

  8. 【VS外接程序】利用T4模板生成模块代码

    引言 记得第一次做asp.net mvc项目时,可以用model直接生成Html的增删改查页面, 没什么特殊要求都可以不用修改直接用了, 觉得很神奇,效率太高了.后来在做客户端开发时,发现很多模块都是 ...

  9. Xamarin.Froms项目中包含的文件

    Clearly, the program created by the Xamarin.Forms template is very simple, so this is an excellent o ...

随机推荐

  1. xv6 系统调用

    1. 系统调用的实现 开发程序需所有的接口在user.h中,包含两部分system call和ulib user.h中的系统接口函数在usys.S中通过汇编实现 #define SYSCALL(nam ...

  2. 高级变量类型(列表,元组,字典,字符串,公共方法,变量高级)for循环

    Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) 真 True 非 0 数 -- 非零即真 假 False 0 复数型 (co ...

  3. handler method 参数绑定常用注解

    handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类: A.处理requet uri 部分(这里指uri template中variable,不含q ...

  4. Redis 在NETCore中的应用

    Redis 在NETCore中的应用 Redis 在netFramework中的应用  也一样 新建.NETCORE(webapi)项目 安装NuGet //查询NuGet语句 Find-Packag ...

  5. html+css 通信课上 2019。3.22

    数据通信 http协议:无状态.无连接.单向的应用层协议:采用请求/响应模型:通信请求只能由客户端发起,服务端对请求做出应答处理 服务器推送数据的解决方案:轮询( ajax) :让浏览器几秒就发送一次 ...

  6. sersync配置

    只记录了自己的操作步骤,详细信息也可以参考https://www.cnblogs.com/sellsa/p/5345092.html 安装sersync 将sersync安装包解压后会有两个配置文件 ...

  7. 框架-Spring及组件概念

    1.什么是Spring Spring框架是一款开源java平台.创建于2003年,轻量级框架(基本版本只有2M). 使用Spring优点: (1)     使用POJOs开发,不再需要EJB容器:如果 ...

  8. 视觉slam十四讲个人理解(ch7视觉里程计1)

    参考博文::https://blog.csdn.net/david_han008/article/details/53560736 https://blog.csdn.net/n66040927/ar ...

  9. java加解密算法--对称加密工作模式

    对称加密又分为分组加密和序列密码.分组密码,也叫块加密(block cyphers),一次加密明文中的一个块.是将明文按一定的位长分组,明文组经过加密运算得到密文组,密文组经过解密运算(加密运算的逆运 ...

  10. F5 BIG-IPLTM单臂组网的三种连接模式