gpt4 book ai didi

xml - 插入选项卡的控件名称

转载 作者:数据小太阳 更新时间:2023-10-29 01:48:02 25 4
gpt4 key购买 nike

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

enter image description here

仍在工作并且可以访问。任何人都可以通过文件中的 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”相关。以下是生成的快照:

enter image description here

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

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

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

您必须添加到 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 - 插入选项卡的控件名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17827622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com