2

我在 Excel 2003 中运行了以下 VBA marco,它阻止了保存、另存为、保存工作区、发送到菜单,但我现在需要做同样的事情,但对于 Excel 2010?

Application.CommandBars("工作表菜单栏").Controls("文件").Controls("另存为...").Enabled = False

Application.CommandBars("工作表菜单栏").Controls("文件")。 Controls("Save").Enabled = False

Application.CommandBars("工作表菜单栏").Controls("文件").Controls("保存工作区...").Enabled = False

Application.CommandBars("工作表菜单栏").Controls("File").Controls("Send To").Enabled = False

Application.CommandBars("工作表菜单栏").Controls("Format").Controls("Sheet").Enabled = False

Excel 2010 中有一个名为“保存并发送”(在“文件”功能区下)的“新菜单”,我也想禁用它……你是怎么做到的?我正在寻找相当于这样一行的内容:

'Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Save & Send").Enabled = False

谢谢您的帮助。

4

3 回答 3

4

对于来自 Microsoft 的 Ribbon UI 示例/文档,请点击此处。他们会推荐你使用CustomUI Editor

在 CustomUI 编辑器中打开您的文件(必须是 Excel 2007+ 文件扩展名,如 XLSX、XLSM、XLAM 等)。然后在编辑器中使用这个 XML:

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<backstage>
    <tab idMso="TabShare" visible="false" enabled="false">
    </tab>
</backstage>
</customUI>

保存文件,然后关闭 CustomUI 编辑器。

然后,打开您的文件。转到 File/Backstage 视图,您应该会看到该Save and Send选项卡已被删除:

禁用 TabShare 的屏幕截图

注意:这已禁用后台视图中的整个“保存并发送”选项卡。应该可以使用 XML 对此进行微调,即启用选项卡,但禁用其中的特定控件(例如,也许您只想禁用Send as Attachment但您想启用其他选项等)但我没有t 完全制定了 XML 层次结构以禁用特定Send As Attachment控件。

希望这可以帮助!

从评论更新

1) 当此文件关闭或另一个文件处于活动状态时,用户会发现“正常”功能。UI 自定义仅适用于包含自定义 UI XML 部分的文件,因此如果您打开了多个文件,则只有该文件会受到禁用Save & Send选项卡的影响。

2) 不幸的是,这与 Excel 2003 或更早版本兼容。CustomUI/XML 不是旧 XLS 文件的一部分,因此无法在这些版本中实现。对于 2003/更早版本的 Excel,您必须使用CommandBars可以通过 VBA 控制的旧版。CommandBar放置一些 VBA 代码来检查 Excel 的哪个版本,并运行一个子例程来禁用某些/Controls (仅当用户是 2003 或更早版本时)相对容易。

如果您尝试将其保存为 XLS 文件,您将收到警告,表明此功能与文件类型不兼容:

CustomUI XML 与 XLS 文件不兼容

此外,您无法在 CustomUI 编辑器中打开 XLS 文件。

于 2013-07-18T15:04:18.950 回答
3

我尝试了下面列出的命令,这些命令禁用了保存和发送菜单Excel 2010

Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Send To").Enabled = False
Application.CommandBars("Worksheet Menu Bar").Controls("File").Controls("Save & Send").Enabled = False
于 2014-05-27T10:25:09.180 回答
-1

这个命令对我有用

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<commands>
    <command idMso="TabShare" enabled="false"/>
</commands> 
</customUI>
于 2015-01-06T07:48:34.960 回答