xml – “插入”选项卡的“控件名称”

前端之家收集整理的这篇文章主要介绍了xml – “插入”选项卡的“控件名称”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图设计一个有一些限制的工作簿而不使用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>

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

要通过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

在我运行它之后,并使用名称中的eet过滤任何内容,我希望看到所有“可以控制”的控件(因为它们具有msoID)并且与“Sheets”相关.以下是它产生的快照:

当我将鼠标悬停在你要隐藏的“按钮”上时,我得到了工具提示“插页” – 这不是我在列表中看到的任何一个.我从中得出结论,确实无法按照您的要求执行操作 – 您无法使用XML禁用该按钮.

这并不意味着你无法达到你想要的效果.我建议采用以下方法.

>捕获创建新工作表时触发的工作簿事件,并在现场将其删除.当按钮“停止工作”时,人们很快就会放弃.示例代码如下.
>完全隐藏工作表标签,并提供在工作表之间导航的替代方法.因为这显然是一个“受控电子表格”,无论如何都可能是一个好主意.您可以在功能区上创建自定义选项卡(使用XML,您似乎熟悉它),或创建位于工作表底部的浮动工具栏 – 靠近“旧”选项卡的位置.通过这种方式,您可以模拟行为 – 但这需要大量的工作和一些黑客攻击
>为工作簿添加保护.使用保护 – >保护工作簿 – > “保护结构”:无法移动,隐藏,取消隐藏或重命名工作表.无法插入新工作表.

您必须添加到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

一旦这在您的工作簿中,每当用户单击“新工作表”按钮时,将会有一个非常短暂的闪存,但不会创建新工作表.你可以添加一个Application.ScreenUpdating = False,但短暂的闪存仍然是……

对不起,我没有更好的消息.

猜你在找的XML相关文章