欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

VSTO为Excel快捷菜单添加项

发布时间:2025/5/22 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 VSTO为Excel快捷菜单添加项 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

示例代码:

public partial class Sheet4     {

        Office.CommandBar menuBar;

         Office.CommandBarPopup menuCustom;

        Office.CommandBarPopup menu1;

        Office.CommandBarButton menu2;

        Office.CommandBarButton menu1_1;

        Office.CommandBarButton menu1_2;

        Office.CommandBarButton menu1_3;

        Office.CommandBar bar1;

        Office.CommandBarPopup cmenu;

        Office.CommandBarButton cmenu_1;

        Office.CommandBarButton cmenu_2;

        private void Sheet4_Startup(object sender, System.EventArgs e)

        {

            /普通的菜单///

            //添加一级菜单

            menuBar = this.Application.CommandBars.ActiveMenuBar;

            menuCustom =

                (Office.CommandBarPopup)menuBar.Controls.Add(

                Office.MsoControlType.msoControlPopup,

                missing, missing, missing, true);

            menuCustom.Caption = “自定义菜单”;

            //添加二级菜单

            menu1 =

                (Office.CommandBarPopup)menuCustom.Controls.Add(

                Office.MsoControlType.msoControlPopup,

                missing, missing, missing, true);

            menu1.Caption = “菜单风格(&S)”;

            //添加同级的菜单

            menu2 =

                (Office.CommandBarButton)menuCustom.Controls.Add(

                Office.MsoControlType.msoControlButton,

                missing, missing, missing, true);

            menu2.Caption = “自定义按钮类型的菜单(&S)”;

            //添加事件要设置Tag属性

            menu2.Tag = “custom”;

            //添加的事件处理函数

            menu2.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(menu2_Click);

            //添加三级菜单

            menu1_1 =

                (Office.CommandBarButton)menu1.Controls.Add(

                Office.MsoControlType.msoControlButton,

                missing, missing, missing, true);

            menu1_1.Caption = “Up”;

            menu1_1.Tag = “MyUp”;

            menu1_1.State = Office.MsoButtonState.msoButtonUp;

            //添加事件

            menu1_1.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(menu1_1_Click);

            menu1_2 =

                (Office.CommandBarButton)menu1.Controls.Add(

                Office.MsoControlType.msoControlButton,

                missing, missing, missing, true);

            menu1_2.Caption = “Down”;

            menu1_2.Tag = “MyDown”;

            menu1_2.State = Office.MsoButtonState.msoButtonDown;

            //

            menu1_2.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(menu1_1_Click);

            menu1_3 =

                (Office.CommandBarButton)menu1.Controls.Add(

                Office.MsoControlType.msoControlButton,

                missing, missing, missing, true);

            menu1_3.Caption = “Mixed”;

            menu1_3.State = Office.MsoButtonState.msoButtonMixed;

            //上下文菜单/

            bar1 = Application.CommandBars["Cell"];

            if (bar1 == null)

                return;

            //添加一级菜单

                       cmenu =

                (Office.CommandBarPopup)bar1.Controls.Add(

                Office.MsoControlType.msoControlPopup,

                missing, missing, missing, true);

            cmenu.Caption = “自定义菜单”;

            //添加二级菜单

            cmenu_1 =

                (Office.CommandBarButton)cmenu.Controls.Add(

                Office.MsoControlType.msoControlButton,

                missing, missing, missing, true);

            cmenu_1.Caption = “Up”;

            cmenu_1.State = Office.MsoButtonState.msoButtonUp;

            //添加二级菜单

            cmenu_2 =

                (Office.CommandBarButton)cmenu.Controls.Add(

                Office.MsoControlType.msoControlButton,

                missing, missing, missing, true);

            cmenu_2.Caption = “Down”;

            cmenu_2.State = Office.MsoButtonState.msoButtonDown;

        }

        void menu1_1_Click(Microsoft.Office.Core.CommandBarButton Ctrl, ref bool CancelDefault)

        {

            //throw new NotImplementedException();

            if (Ctrl.Caption == “Up”)

            {                

      Ctrl.State = Office.MsoButtonState.msoButtonDown;

                Ctrl.Caption = “Down”;

            }

            else

            {

                Ctrl.State = Office.MsoButtonState.msoButtonUp;

                Ctrl.Caption = “Up”;

            }

        }

        void menu2_Click(Microsoft.Office.Core.CommandBarButton Ctrl, ref bool CancelDefault)

        {

            //throw new NotImplementedException();

            MessageBox.Show(”这是一个自定义菜单项”);

        }

        private void Sheet4_Shutdown(object sender, System.EventArgs e)         {         }

        #region VSTO Designer generated code

        /// <summary>

        /// Required method for Designer support - do not modify

        /// the contents of this method with the code editor.

        /// </summary>

        private void InternalStartup()

        {

            this.Startup += new System.EventHandler(Sheet4_Startup);

            this.Shutdown += new System.EventHandler(Sheet4_Shutdown);

        }

        #endregion

转载于:https://www.cnblogs.com/lisengl/archive/2012/11/28/2792153.html

总结

以上是生活随笔为你收集整理的VSTO为Excel快捷菜单添加项的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。