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. NBU For Windows 更新后无法启动Java Console

    系统环境:Win Server 2016 备份软件:NBU 8.1   Case :Windows系统默认自动安装系统补丁,重启过程中自动进行了Update,打上了最新的补丁后,NBU Java Co ...

  2. chr()//ord() //进制转换函数//eval()//文件函数//split()

    1.chr() 函数 chr() 用一个范围在 range(256)内的(就是0-255)整数作参数,返回一个对应的字符. 用法:chr(i) i可以是10进制也可以是16进制的形式的数字. 2.or ...

  3. python画图嵌入html

    #-*- coding=utf-8 -*- import matplotlib import matplotlib.pyplot as plt from io import BytesIO impor ...

  4. 解决 springweb Filter 读取request body miss body

    package com.lb.demo.listener; import java.io.BufferedReader; import java.io.ByteArrayInputStream; im ...

  5. Thread--线程间通信--管道

    在Java语言中提供了各种各样的输入/输出流Stream,使我们能够方便的对数据进行操作,其中管道流是一种特殊的流,用于在不同线程间直接传送数据.一个线程发送数据到输出管道,另一个线程从输入管道中读数 ...

  6. C#——发送邮件

    需要2个引用 using System.Net;using System.Net.Mail; using (MailMessage mailMessige=new MailMessage()) usi ...

  7. MQTT的编译和安装(mosquitto)

    1.基于IBM开发的开元框架实现mosquitto  下载地址:http://mosquitto.org/files/source/ 编译安装:(参考链接:https://www.cnblogs.co ...

  8. 更改php.ini配置

    vi /etc/php.ini #编辑修改 @ini_set('memory_limit',        '64M');                                      / ...

  9. delphpi tcp 服务和客户端 例子

    //服务器端unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, ...

  10. UVA 10158 并查集的经典应用

    这个题目一看就是用并查集,有N个国家代表,在M行给出两两之间的关系,敌人或者朋友,(当然如果该关系跟已知关系冲突,则输出-1) 关系的几个约束条件时这样的 在朋友方面,朋友的朋友就是自己的朋友,这个就 ...