Excel VSTO开发11-自定义菜单项

这篇具有很好参考价值的文章主要介绍了Excel VSTO开发11-自定义菜单项。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。

11 自定义菜单项

自定义菜单项可以在插件启动时候添加,即增加到ThisAddIn_Startup() 内。

下面以具体代码说明:

[代码7] 增加自定义菜单项

    '插件启动时候

    Private Sub ThisAddIn_Startup() Handles Me.Startup

        ……

        Call addMenu()

End Sub文章来源地址https://www.toymoban.com/news/detail-696914.html

    Private Sub addMenu()

        '单元格右键时候的弹出菜单

        Dim cMenuControl As Office.CommandBar = Globals.ThisAddIn.Application.CommandBars("Cell")

        '增加菜单项到菜单第一个

        Dim cButtonControl As Microsoft.Office.Core.CommandBarControl = cMenuControl.Controls.Add(Microsoft.Office.Core.MsoControlType.msoControlButton, Before:=1)

        '转换为CommandBarButton

        Dim cButton As Microsoft.Office.Core.CommandBarButton = CType(cButtonControl, Microsoft.Office.Core.CommandBarButton)

        cButton.Caption = "查看菜单"

        cButton.Tag = "这是自定义菜单项"

        cButton.FaceId = 22

        '增加菜单项按下事件

        AddHandler cButton.Click, AddressOf menu_click

End Sub

以上代码运行后会在单元格右键菜单上增加一个“查看菜单”菜单项,位置在第一个。如下图所示:

Excel VSTO开发11-自定义菜单项,excel,ui,xhtml

23 增加自定义菜单项

如果把代码中

Before:=1

修改为

Before:=5

那么菜单项将增加到第5个位置,如下图所示:

Excel VSTO开发11-自定义菜单项,excel,ui,xhtml

24 自定义菜单项位置改变后

在实际中,以上代码会存在一定问题,读者可以测试,当运行多次后会发现多出很多相同的菜单项,也就是菜单项重复被添加。

修改后的代码如下:

    Private Sub addMenu()

        '单元格右键时候的弹出菜单

        Dim cMenuControl As Office.CommandBar = Globals.ThisAddIn.Application.CommandBars("Cell")

        '列出当前菜单的所有菜单项

        For Each cControl As Microsoft.Office.Core.CommandBarControl In cMenuControl.Controls

            '下面一句代码可以输出当前所有菜单项

            'System.Diagnostics.Debug.WriteLine(cControl.Caption & "   " & cControl.Id)

            ' 如果已经存在我们自定义的菜单项

            If cControl.Caption = "查看菜单" Then

                '1、可以退出

                'Exit Sub

                '2、可以将之前已经存在的菜单项删除

                cControl.Delete()

            End If

        Next

        '增加菜单项到菜单第一个

        Dim cButtonControl As Microsoft.Office.Core.CommandBarControl = cMenuControl.Controls.Add(Microsoft.Office.Core.MsoControlType.msoControlButton, Before:=1)

        '转换为CommandBarButton

        Dim cButton As Microsoft.Office.Core.CommandBarButton = CType(cButtonControl, Microsoft.Office.Core.CommandBarButton)

        cButton.Caption = "查看菜单"

        cButton.Tag = "这是自定义菜单项"

        cButton.FaceId = 22

        '增加菜单项按下事件

        AddHandler cButton.Click, AddressOf menu_click

End Sub

顺便将自定义菜单项的事件增加如下:

    '菜单项按下事件:列出所有的命令栏ID和名称

    Public Sub menu_click(ByVal control As Office.CommandBarButton, ByRef cancelDefault As Boolean)

        'Excel里面随时记住从1开始,而非vb中的0开始

        Dim i As Integer = 1

        Dim Wbook As Excel.Workbook = Application.Workbooks(1)

        Dim Wsheet As Excel.Worksheet

        Wsheet = Wbook.Worksheets("sheet1")

        For Each cMenuControl As Office.CommandBar In Globals.ThisAddIn.Application.CommandBars

            Wsheet.Cells(i, 1).Value = cMenuControl.Id

            Wsheet.Cells(i, 2).Value = cMenuControl.Name

            Select Case cMenuControl.Type

                Case 0

                    Wsheet.Cells(i, 3).Value = "msoBarTypeNormal"

                Case 1

                    Wsheet.Cells(i, 3).Value = "msoBarTypeMenuBar"

                Case 2

                    Wsheet.Cells(i, 3).Value = "msoBarTypePopup"

                Case Else

            End Select

            i += 1

        Next

        MsgBox("ok")

End Sub

到了这里,关于Excel VSTO开发11-自定义菜单项的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Excel VSTO开发7 -可视化界面开发

    前面的代码都是基于插件启动或者退出时,以及Excel Application的相关事件,在用户实际操作中并不会显示相应的界面,当然也不需要显示相关界面。但是,这对于用户显然不是那么友好,而且也不利于正常的在Excel中的操作。该显示的应该使用UI显示出来,而且还有部分操作是

    2024年02月09日
    浏览(41)
  • Office如何通过VSTO进行EXCEL插件开发?

      VSTO(Visual Studio Tools for Office )是VBA的替代,是一套用于创建自定义Office应用程序的Visual Studio工具包。VSTO可以用Visual Basic 或者Visual C#扩展Office应用程序(例如Word、Excel、PPT)。本文通过VSTO进行Excel插件开发总结,并进行记录。    (1)安装Visual Studio   在百度等浏览器

    2024年02月16日
    浏览(47)
  • vsto excel 可以异步写入值么

    在 VSTO (Visual Studio Tools for Office) 中,Excel 可以使用异步方式写入值。异步编程允许您在后台线程中执行耗时的操作,而不会阻塞主线程,从而提高程序的响应性能。 从 .NET 4.5 开始,可以使用异步和 await 来简化异步编程。以下是一个示例,展示如何在 VSTO 中异步写入值

    2024年02月14日
    浏览(46)
  • 前端开发中ui(antd)表格导出为excel。详细步骤一看就会

    我们在开发的时候往往有这样的需求,将页面上的表格导出为excel文件。以随手写的demo为例。   1、首先我们需要下载一个插件,用于将页面中的数据转为excel文件            可以通过我们的package.json文件去查看是否安装好 2、在我们需要用到的页面去引用  3、定义触发

    2024年02月15日
    浏览(39)
  • EXCEL中如何调出“数据分析”的菜单

    今天发现,原来WPS还是和EXCEL比,还是少了“数据分析”这个日常基本做统计的菜单,只好用EXCEL了,但奇怪发现我的EXCEL中没发现这个菜单,然后查了下,才发现,要用如下的方法打开: 1)选择“数据”- 右键“数据工具”- 选择“自定义快速访问工具栏”,选择后将弹出“

    2024年02月19日
    浏览(44)
  • 【python】【excel】在UI中加载EXCEL并修改

    这段代码是一个简单的Excel编辑器,它使用了 tkinter 库构建图形用户界面(GUI), pandas 库处理Excel文件,以及 pandastable 库在GUI中展示和编辑Excel数据。现在我将详细解释每个库的作用。 tkinter : tkinter 是Python的标准GUI库,用于创建和管理图形用户界面。在这段代码中, tkint

    2024年02月11日
    浏览(34)
  • Finereport11 类Excel筛选

    微信公众号: 次世代数据技术 关注可了解更多的教程。问题或建议,请公众号留言或联系本人; 微信号: weibw162 本教程视频讲解可以关注本人B站账号进行观看: weibw162 在使用FIneReport软件开发时,我们希望前台报表展示时可以类似Excel表格筛选那样,在表头进行多选筛选过滤

    2024年04月08日
    浏览(23)
  • html学习笔记11-标签简写及全称、XHTML

    https://www.runoob.com/html/html-tag-name.html XHTML 是以 XML 格式编写的 HTML。可扩展超文本标记语言 XML 是一种必须正确标记且格式良好的标记语言。 XML 指可扩展标记语言(eXtensible Markup Language)。

    2024年02月11日
    浏览(40)
  • 《python每天一小段》-- (11)操作 Excel 详解

    欢迎阅读《Python每天一小段》系列!在本篇文章中,将使用Python编写自动化 Excel 操作的程序。 (1)Python 操作 Excel 详解 Excel 是办公软件中常用的工具之一,它可以用于存储、整理和分析数据。Python 是一门强大的编程语言,它可以用于自动化 Excel 操作。 在本教程中,我们将

    2024年02月04日
    浏览(35)
  • vue+element UI Excel导入导出

     1.终端执行命令 2.script中导入 3.单表头效果图 4.html代码:  

    2024年02月04日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包