如何删除Excel2007模板.xltx中的所有命令栏,并添加带有自己控件的命令栏

本文关键字:命令 何删除 添加 控件 自己 模板 Excel2007 xltx 删除 | 更新日期: 2023-09-27 18:28:10

我使用VS 2010创建Excel 2007 xltx模板。我想删除所有Excel命令栏并禁用以向用户显示,并添加带有控件的自己的命令栏。在某些控件中,我想调用此模板中的VBA函数。我认为这个操作我必须在:

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

有什么建议吗?谢谢我使用VS 2010创建Excel 2007 xltx模板。我想删除所有Excel命令栏并禁用以向用户显示,并添加带有控件的自己的命令栏。在某些控件中,我想调用此模板中的VBA函数。我认为这个操作我必须在:

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

有什么建议吗?谢谢

UPD1:我尝试:

private void ThisWorkbook_Startup(object sender, System.EventArgs e)
        {
            foreach (CommandBar bar in this.Application.ThisWorkbook.CommandBars)
            {
                bar.Visible = false;
                //or  bar.Delete();
            }            
        }

但我得到错误:System.Runtime.InteropServices.COMException(0x800A03EC):HRESULT中的异常:0x800A03EC位于Microsoft.Office.Interop.Excel_Application.get_ThisWorkbook()位于G:''PROJECTS''T100''T100''ThisWorkbook.cs:line 20中的T100.ThisWorkbook.ThisWorkbook_Startup(对象发送器,EventArgs e)位于Microsoft.Office.Tools.Excel.WorkbookImpl.OnStartup()位于Microsoft.Office.Tools.Excel.WorkbookImpl.WorkbookExtensionImpl.Microsoft.Office.TTools.EntryPoint.OnStartup()位于Microsoft.Office.Tools.Excel.WorkbookBase.OnStartup()位于G:''PROJECTS''T100''T100''ThisWorkbook.Designer.cs:line 57中的T100.ThisWorkbook.FinishInitialize()位于Microsoft.Office.Tools.Excel.WorkbookBase.Microsoft.Office.Tools.EntryPoint.FinishInitialization()位于Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustoming.ExecutePhase(ExecutionPhases-ExecutionPhases)位于Microsoft.Microsoft.VisualStudio.Tools.Office.Runtime.DomainCreator.ExecuteCustoming.Microsoft.Microsoft.VisualStudio.Tools.Office.Runtime.IInterop.IExecuteCustomization2.ExecuteEntryPoints()

如何删除Excel2007模板.xltx中的所有命令栏,并添加带有自己控件的命令栏

将新功能区添加到项目中,并在功能区xml 中进行设置

<ribbon startFromScratch="true">

如果使用功能区设计器,则可以在属性窗口中找到startFromScratch属性,并将其设置为"true"。