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

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

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

 1 Imports Microsoft.Office.Core
 2 Public Class ThisAddIn
 3
 4     Private Sub ThisAddIn_Startup() Handles Me.Startup
 5         CreateCTP()
 6     End Sub
 7
 8     Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
 9         DisposeCTP()
10     End Sub
11     Protected Overrides Function CreateRibbonExtensibilityObject() As IRibbonExtensibility
12         Return New Ribbon1()
13     End Function
14 End Class
15
16 <System.Runtime.InteropServices.ComVisible(True)>
17 Public Class Ribbon1
18     Implements IRibbonExtensibility
19     Public R As IRibbonUI
20     Public Function GetCustomUI(RibbonID As String) As String Implements IRibbonExtensibility.GetCustomUI
21         Dim xml As XElement
22         xml = <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="OnLoad">
23                   <ribbon startFromScratch="false">
24                       <tabs>
25                           <tab id="Tab1" label="RibbonXmlEditor">
26                               <group id="Group1" label="Author:ryueifu">
27                                   <button id="Button1" label="CTP" imageMso="C" onAction="Button1_Click"/>
28                                   <button id="Button2" label="UnLoad" imageMso="U" onAction="Button2_Click"/>
29                               </group>
30                           </tab>
31                       </tabs>
32                   </ribbon>
33               </customUI>
34         Return xml.ToString()
35     End Function
36     Public Sub OnLoad(ribbon As IRibbonUI)
37         R = ribbon
38         R.ActivateTab(ControlID:="Tab1")
39     End Sub
40     Public Sub Button1_Click(control As IRibbonControl)
41         ctp.Visible = Not ctp.Visible
42     End Sub
43     Public Sub Button2_Click(control As IRibbonControl)
44         Dim ThisCOM As COMAddIn
45         ThisCOM = Globals.ThisAddIn.Application.COMAddIns.Item(Index:=My.Application.Info.AssemblyName)
46         ThisCOM.Connect = False
47     End Sub
48 End Class
49
50 Public Module Module1
51     Public uc As System.Windows.Forms.UserControl
52     Public ctp As Microsoft.Office.Tools.CustomTaskPane
53     Public Sub CreateCTP()
54         uc = New Windows.Forms.UserControl
55         ctp = Globals.ThisAddIn.CustomTaskPanes.Add(control:=uc, title:="CTP")
56         With ctp
57             .DockPosition = MsoCTPDockPosition.msoCTPDockPositionRight
58             .Visible = True
59         End With
60     End Sub
61     Public Sub DisposeCTP()
62         ctp.Dispose()
63     End Sub
64 End Module

原文地址:https://www.cnblogs.com/ryueifu-VBA/p/10122590.html

时间: 2024-10-03 00:36:32

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

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

Excel-DNA项目中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在Class1.cs这个默认文件中. 大家可以在Visual Studio中创建一个类库项目(.Net Framework),然后把默认的Class1.cs中的代码整体替换为下面我贴的这个代码.然后启动调试,就可以看到自定义功能区和任务窗格了. 1 using System.Runtime.InteropServices; 2 using ExcelDna.Integr

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

要查看英语原文,请勾选“英语”复选框.也可将鼠标指针移到文本上,在弹出窗口中显示英语原文. 翻译 英语 本文档已存档,并且将不进行维护. Web 应用程序项目与 Visual Studio 中的网站项目 在Visual Studio可以创建 Web 应用程序项目 或 网站项目. 通过选择 新建项目 或 打开项目 创建或打开一个 Web 应用程序项目在Visual Studio 文件 菜单. 通过选择 新建网站 或 打开网站 创建或打开一个网站项目在"文件"菜单. 每种项目类型各有优缺点

利用Appdomain动态加载程序集,实现更灵活的vs2012外接程序开发

结构图 生成目录和新的appdomain基目录相同,随时生成,随时加载. 接口代码     public interface FuncProcessings      {          void GetFunctionMessage(FuncMessage funcMessage);         string ReturnResult();     }     [Serializable]    public struct FuncMessage     {         privat

C#项目,在controller文件夹右击鼠标没有“添加控制器”的问题

1.发现拷贝的项目,在controller文件夹右击鼠标不能没有“添加控制器”这一项,在控制器里面右键控制器名称也没有“添加视图”,这样就控制器和视图都要手写,开发效率低 . 2.原因是mvc包的问题,解决方法为:先卸载mvc包,再安装一次,再重启vs. 具体步骤: 1)在自己的web项目的“引用”上操作,如下图的“引用”,右击,点击”管理NuGet程序包“. 2)在弹出的如下界面,找到该项,点击“卸载”. 3)卸载完之后就安装这个. 4)一般的情况下,以上的步骤就可以完成了,重启一下项目后,问

安卓项目中的必须文件

res目录.src目录和AndroidManifest.xml文件是Android项目所必须的.其他目录.其他文件都是可选的.res目录存放android项目的各种资源文件,比如layout存放界面布局文件.values目录下则存放各种XML格式的资源文件,例如字符串资源文件:string.xml;颜色资源文件:colors.xml;尺寸资源文件:dimens.xml.src目录只是一个普通的.保存java源文件的目录.AndroidManifest.xml文件是Android项目的系统清单文件

MFC:“Debug Assertion Failed!” ——自动生成的单文档程序项目编译运行就有错误

今天照着孙鑫老师的VC++教程学习文件的操作,VS2010,单文档应用程序,项目文件命名为File,也就有了自动生成的CFileDoc.CFileView等类,一进去就编译运行(就是最初自动生成的项目),编译通过,可运行时直接弹出错误框,有点小懵,,,啥都没做就给我看这个: 图一   错误提示框 后来搜索一查,网上好多类似的错误以及解决方案,几乎都试了个遍,有: 方法(1)-重新生成解决方案,或者将项目文件目录下Debug文件夹删了,重新生成Release版: 方法(2)-可以先声明一个临时的C

撸了一个微信小程序项目

学会一项开发技能最快的步骤就是:准备,开火,瞄准.最慢的就是:准备,瞄准,瞄准,瞄准-- 因为微信小程序比较简单,直接开撸就行,千万别瞄准. 于是乎,趁着今天上午空气质量不错,撸了一个小程序,放在了男性交友网站上了, 我添加了很全的注释,大家赏个star. 地址:https://github.com/yll2wcf/wechat-weapp-lifeTools 功能介绍 功能比较简单,调用了百度ApiStore的接口即时查询空气质量. 我计划多加一些功能,争取把微信小程序提供的功能全用一遍. 也

01- - -1.获得项目中info.plist文件的内容 2.沙盒的数据存储及读取 3.控制器view的高度和状态栏statusBar的关系 4.[UIScreen mainScreen].applicationFrame的取值 5.按钮的状态 6.错误调试技巧 7.按钮的各种状态设置

1.获得项目中info.plist文件的内容 1> [NSBundle mainBundle].infoDictionary 2> 版本号在info.plist中的key:kCFBundleVersionKey 2.沙盒的数据存储及读取 1> 数据存储: [[NSUserDefaults standardUserDefaults] setObject:version forKey:versionKey]; 存储数据时记得同步一下 [[NSUserDefaults standardUser

数独GUI程序项目实现

数独GUI程序项目实现 导语:最近玩上了数独这个游戏,但是找到的几个PC端数独游戏都有点老了...我就想自己做一个数独小游戏,也是一个不错的选择. 前期我在网上简单地查看了一些数独游戏的界面,代码.好好地了解了一下现在数独游戏的大概的框架.当然,我自己写的小游戏,也许没那么好.但是我一定会一点点升级这个小游戏的. 目前,我做的游戏是V1.0版本的,只能说实现了这个游戏的基本功能:可以进行数独游戏.可以更换背景色以及一些其他的基本功能.接下来,在空余时间,我会进行对其中一Studying功能的实现