插入选项卡的控制名称

我试图devise一个有一些限制的工作簿,而不使用在2007年和2010年兼容的Excel中的VBA。我select了“用于Microsoft Office的自定义用户界面编辑器”以XML代码来限制几个选项: – 与信息保存选项卡,插入,删除,移动/复印工作表,隐藏工作表,取消隐藏工作表。 我成功地这样做,但我注意到,插入工作表选项卡“图标”

在这里输入图像说明

仍然在工作,可以访问。 任何人都可以指向我的控制名称通过XML文件中禁用它?

我的代码是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"> <commands> <command idMso="FileSaveAsWebPage" enabled="false" /> <command idMso="FileSaveAs" enabled="false" /> <command idMso="FileSaveAsMenu" enabled="false" /> <command idMso="FileSaveAsExcelXlsx" enabled="false" /> <command idMso="FileSaveAsExcelXlsxMacro" enabled="false" /> <command idMso="FileSaveAsExcel97_2003" enabled="false" /> <command idMso="FileSaveAsExcelOpenDocumentSpreadsheet" enabled="false" /> <command idMso="FileSaveAsPdfOrXps" enabled="false" /> <command idMso="FileSaveAsOtherFormats" enabled="false" /> <command idMso="SheetInsert" enabled="false" /> <command idMso="SheetInsertPage" enabled="false" /> <command idMso="SheetDelete" enabled="false" /> <command idMso="SheetRename" enabled="false" /> <command idMso="SheetMoveOrCopy" enabled="false" /> <command idMso="SheetUnhide" enabled="false" /> <command idMso="SheetProtect" enabled="false" /> <command idMso="SheetTabColorGallery" enabled="false" /> <command idMso="SheetTabColorMoreColorsDialog" enabled="false" /> <command idMso="SelectAllSheets" enabled="false" /> </commands> <backstage> <tab idMso="TabInfo" visible="false"/> </backstage> </customUI> 

我也尝试searchMicrosoft和Rondebruin的Office Fluent用户界面控制标识符。

为了做到这一点,你需要能够访问元素 – 它需要一个ID。 手动扫描微软发布的各种列表并没有什么帮助,但是由于他们的文档非常潦草,我决定编写一小段代码,在Excel应用程序中查找“每个带ID的控件”的ID,并列出它:

 Sub listID() Dim r As Range Dim ctls Dim ii As Long Cells(1, 1).Value = "ID" Cells(1, 2).Value = "caption" Cells(1, 3) = "Type" Set r = Range("a1") For ii = 1 To 100000 Set ctls = CommandBars.FindControl(Id:=ii) If Not (ctls Is Nothing) Then 'Debug.Print "controls ID " & ii & " exists; the caption is " & ctls.Caption & "; the type is " & ctls.Type Set r = r.Offset(1, 0) r.Value = ii r.Offset(0, 1) = ctls.Caption r.Offset(0, 2) = ctls.Type r.Offset(0, 3) = ctls.TooltipText End If Next ii End Sub 

在我运行这个之后,用名称中的eet过滤任何东西,我希望看到所有的“可以控制”的控件(因为它们有一个msoID ),并且涉及到“表格”。 以下是这个产生的快照:

在这里输入图像说明

当我把鼠标hover在你想隐藏的“button”上时,我得到了工具提示“插入工作表” – 这不是我在列表中可以看到的任何工具提示。 我从这里得出结论:确实不可能做你所问的 – 你不能用XML禁用这个button。

这并不意味着你不能达到你想要的。 我会build议以下方法。

  1. 捕获创build新工作表时触发的工作簿事件,并在现场将其删除。 当button“停止工作”的人很快就会放弃。 下面的示例代码。
  2. 完全隐藏工作表选项卡,并提供另一种在工作表之间导航的方法。 由于这显然是一个“控制电子表格”,无论如何,这可能是一个好主意。 您可以在function区上创build一个自定义选项卡(使用XML,您似乎很熟悉这个选项卡),也可以创build一个位于工作表底部的浮动工具栏 – 靠近“旧”选项卡的位置。 这样你就可以模拟这种行为 – 但是这是一个很大的工作,而且有点诡计
  3. 将保护添加到工作簿。 使用保护 – >保护工作簿 – >“保护结构”:工作sheets can not be moved, deleted, hidden, unhidden, or renamed. New sheets cannot be inserted. sheets can not be moved, deleted, hidden, unhidden, or renamed. New sheets cannot be inserted.

您必须添加到ThisWorkbook的代码是:

 Private Sub Workbook_NewSheet(ByVal Sh As Object) Dim temp As Boolean temp = Application.DisplayAlerts Application.DisplayAlerts = False Sh.Delete Application.DisplayAlerts = temp End Sub 

一旦这是在你的工作簿,任何时候用户点击“新工作表”button将有一个非常简短的闪光,但没有新的工作表创build。 你可以添加一个Application.ScreenUpdating = False但简短的闪光仍然…

对不起,我没有更好的消息给你。

您可以select“审阅”选项卡,select“保护工作簿”,然后选中“结构”。 您不需要指定密码,“插入工作表”button将被禁用(但仍然可见)。

或者,您可以从Officebutton,高级选项卡转到Excel选项,向下滚动到显示此工作簿的选项,并取消选中显示 工作 表选项卡

我不相信这可以从XML完成。 也就是说,要禁用或隐藏此button(不隐藏所有工作表选项卡)。 也许有人会certificate我错了;)