Excel-DNA项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【VB.Net版】
Excel-DNA项目中的自定义功能区和自定义任务窗格需要用到各种命名空间、添加所需文件,才能实现。后来我发现可以把所有代码都写在Class1.vb这个默认文件中。
大家可以在Visual Studio中创建一个类库项目(.Net Framework),然后把默认的Class1.vb中的代码整体替换为下面我贴的这个代码。然后启动调试,就可以看到自定义功能区和任务窗格了。
Imports System.Runtime.InteropServices
Imports ExcelDna.Integration
Imports ExcelDna.Integration.CustomUI
Imports Excel = Microsoft.Office.Interop.Excel
<ComVisible(True)>
Public Class Class1
Inherits ExcelRibbon
Implements IExcelAddIn
Public R As IRibbonUI
Public Overrides Function GetCustomUI(RibbonID As String) As String
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 ThisAddin As Excel.AddIn
ThisAddin = ExcelDnaUtil.Application.AddIns.Item(Index:=My.Application.Info.AssemblyName)
ThisAddin.Installed = False
End Sub Public Sub AutoOpen() Implements IExcelAddIn.AutoOpen
Module1.CreateCTP()
End Sub Public Sub AutoClose() Implements IExcelAddIn.AutoClose
Module1.DisposeCTP()
End Sub
End Class Public Module Module1
Public uc As System.Windows.Forms.UserControl
Public ctp As CustomTaskPane
Public Sub CreateCTP()
uc = New Windows.Forms.UserControl
ctp = CustomTaskPaneFactory.CreateCustomTaskPane(userControl:=uc, title:="CTP")
With ctp
.DockPosition = MsoCTPDockPosition.msoCTPDockPositionRight
.Visible = True
End With
End Sub
Public Sub DisposeCTP()
ctp.Dispose()
End Sub
End Module
Excel-DNA项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【VB.Net版】的更多相关文章
- Excel-DNA项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【C#版】
Excel-DNA项目中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在Class1.cs这个默认文件中. 大家可以在Visual Studi ...
- VSTO外接程序项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【C#版】
VSTO中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在ThisAddin.cs这个默认文件中. 大家可以在Visual Studio中创建 ...
- VSTO外接程序项目只用1个文件实现Ribbon CustomUI和CustomTaskpane定制【VB.Net版】
VSTO中的自定义功能区和自定义任务窗格需要用到各种命名空间.添加所需文件,才能实现.后来我发现可以把所有代码都写在ThisAddin.vb这个默认文件中. 大家可以在Visual Studio中创建 ...
- Excel DNA学习笔记一
由于各种原因,被迫学习Excel DNA这个开源项目的使用方法,最后希望可以在其中,调用xll进行编码. 由此整理一下,这期间使用到的一些资料. 1.下载Excel DNA,目前最新的是0.30版 h ...
- Android项目实战(二十四):项目包成jar文件,并且将工程中引用的jar一起打入新的jar文件中
前言: 关于.jar文件: 平时我们Android项目开发中经常会用到第三方的.jar文件. 其实.jar文件就是一个类似.zip文件的压缩包,里面包含了一些源代码,注意的是.jar不包含资源文件(r ...
- ANDROID STDUIO 项目里的R文件突然丢失的解决办法N种之一
刚刚项目里的R文件突然挂了,清理项目,关闭重开Studio,都不能解决.快没折了. 然后只好在项目上右击,看看有没有解决的办法.发现有个 Make Module ,姑且试试吧. 结果,竟然修复了.这是 ...
- chrome调试本地项目, 引用本地javascript文件
chrome调试本地项目, 引用本地javascript文件 本地文件可以访问本地文件 修改快捷方式属性 C:\Users\xxx\AppData\Local\Google\Chrome\Applic ...
- 解决eclipse+git中每次clean项目需要重新commit文件
使用.gitignore文件避免每次clean项目需要重新commit文件(XX.xcodeproj/project.xcworkspace/xcuserdata/XX.xcuserdatad/Use ...
- delphi项目中的modelsupport文件夹
delphi项目中的modelsupport文件夹 今天写着写着突然发现多了一个这个文件夹..苦思不得其解 看着又难受 删了又重建 终于找到了 存此备查;Tools--option--toget ...
随机推荐
- git push的时候.gitignore不起作用的解决方法
问题的原因 这是因为在你添加.gitignore之前已经进行过push操作,有些文件已经纳入版本管理了. 解决方法 我们就应该先把本地缓存删除,然后再进行git的push,这样就不会出现忽略的文件了. ...
- 反编译查看printf()的方法
源代码: package test2; public class ExplorationJDKSource { /** * @param args */ public static void main ...
- Map的6种遍历方法
声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 探讨有几种遍历Map的方法其实意义并不大,网上的文章一般讲4种或5种的居多,重要的是知道遍历的内涵,从遍历 ...
- Window Mysql5.7免安装版配置
1.下载mysql 5.7 32位:https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.19-win32.zip 5.7 64位:https ...
- h5-拖拽接口
1.原效果网页 拖拽后: 2.主要实现代码 <div class="div1" id="div1"> <!--在h5中,如果想拖拽元素,久必须 ...
- 吴裕雄--天生自然ShellX学习笔记:Shell 输入/输出重定向
大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端.一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端.同样,一个命令通常将其输出写入到标准输出,默 ...
- 分布式场景下Kafka消息顺序性的思考
如果业务中,对于kafka发送消息异步消费的场景,在业务上需要实现在消费时实现顺序消费, 利用kafka在partition内消息有序的特点,消息消费时的有序性. 1.在发送消息时,通过指定parti ...
- 第1章 MYSQL 体系结构和存储引擎
一.定义数据库和实例 在集群的条件下,存在单个数据库对应多个实例 二.Mysql 体系结构 三.Mysql 存储引擎及各存储引擎之间的比较 命令:show engines; 四.连接 MySQL 4. ...
- Python之小作业
文档如下: # name, age, score tom, 12, 86 Lee, 15, 99 Lucy, 11, 58 Joseph, 19, 56 第一栏为姓名(name),第二栏为年纪(age ...
- IDEA 安装破解
打开IntelliJ IDEA的官网. https://www.jetbrains.com/idea/download/#section=windows 开始安装吧!傻瓜式安装,不多说 激活 ...