插入选项卡的控件名称

Jim*_*ose 7 xml excel vba excel-2007 ms-office excel-vba

我试图设计一个有一些限制的工作簿而不使用Excel中的VBA,它在2007年和2010年兼容.我选择了"自定义UI编辑器用于Microsoft Office",使用XML代码来限制一些选项: - 另存为信息选项卡,插入,删除,移动/复制工作表,隐藏工作表,取消隐藏工作表.我这样做是成功的,但我注意到插入表格标签"ICON"

在此输入图像描述

仍在工作,可以访问.任何人都可以指向控制名称来通过文件中的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>
Run Code Online (Sandbox Code Playgroud)

我也试过在Microsoft和rondebruin上搜索Office Fluent用户界面控件标识符.

Flo*_*ris 5

为了通过 XML 完成此操作,您需要能够访问该元素 - 它需要有一个 ID。手动扫描 Microsoft 发布的各种列表没有任何帮助,但由于他们的文档非常草率,我决定编写一小段代码,在 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
Run Code Online (Sandbox Code Playgroud)

在我运行此命令并过滤eet名称中的任何内容后,我希望看到所有“可以控制”的控件(因为它们有一个msoID)并且与“工作表”相关。以下是生成的快照:

在此输入图像描述

当我将鼠标悬停在要隐藏的“按钮”上时,我会看到工具提示“插入工作表” - 这不是我在列表中看到的任何一个。我由此得出的结论是,确实不可能执行您所要求的操作 - 您无法使用 XML 禁用该按钮。

这并不意味着您无法实现您想要的目标。我建议采用以下方法。

  1. 捕获创建新sheet时触发的workbook事件,并当场删除。当按钮“停止工作”时,人们很快就会放弃。下面的示例代码。
  2. 完全隐藏工作表选项卡,并提供在工作表之间导航的替代方法。因为这显然是一个“受控电子表格”,所以无论如何这可能是一个好主意。您可以在功能区上创建一个自定义选项卡(使用 XML,您似乎对此很熟悉),或者创建一个位于工作表底部的浮动工具栏 - 靠近“旧”选项卡曾经所在的位置。通过这种方式,你可以模拟行为 - 但这需要大量工作,而且需要一些技巧
  3. 为工作簿添加保护。使用“保护”->“保护工作簿”->“保护结构”: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
Run Code Online (Sandbox Code Playgroud)

一旦将其添加到您的工作簿中,每当用户单击“新工作表”按钮时,都会出现非常短暂的闪烁,但不会创建新工作表。您可以添加一个Application.ScreenUpdating = False,但短暂的闪光仍然存在......

抱歉,我没有更好的消息给你。


And*_*y G 1

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

或者,您可以从 Office 按钮、“高级”选项卡转到“Excel 选项”,向下滚动到“此工作簿的显示选项”,然后取消选中“显示工作表选项卡”

我不相信这可以通过 XML 来完成。也就是说,禁用或隐藏此按钮(不隐藏所有工作表选项卡)。也许有人会证明我错了;)