Vba 如何禁用“禁用”;“保存并发送”;在Excel 2010中(在文件功能区中)(在Office 2010中称为backstage)?

Vba 如何禁用“禁用”;“保存并发送”;在Excel 2010中(在文件功能区中)(在Office 2010中称为backstage)?,vba,excel,excel-2010,ribbon,ribbonx,Vba,Excel,Excel 2010,Ribbon,Ribbonx,我在Excel2003中运行了以下VBA marco,它阻止了保存、另存为、保存工作区、发送到 菜单,但我现在需要做同样的,但Excel 2010 Application.commandbar(“工作表菜单栏”).Controls(“文件”).Controls(“另存为…”)。Enabled=False Application.commandbar(“工作表菜单栏”).Controls(“文件”).Controls(“保存”).Enabled=False Application.comman

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

Application.commandbar(“工作表菜单栏”).Controls(“文件”).Controls(“另存为…”)。Enabled=False

Application.commandbar(“工作表菜单栏”).Controls(“文件”).Controls(“保存”).Enabled=False

Application.commandbar(“工作表菜单栏”).Controls(“文件”).Controls(“保存工作区…”)。Enabled=False

Application.commandbar(“工作表菜单栏”).Controls(“文件”).Controls(“发送到”).Enabled=False

Application.commandbar(“工作表菜单栏”)。控件(“格式”)。控件(“工作表”)。Enabled=False

Excel 2010中有一个名为“保存并发送”(在文件功能区下)的“新菜单”,我也想禁用它…如何做到这一点?我正在搜索类似于这样一行的等效项:


'Application.commandbar(“工作表菜单栏”).Controls(“文件”).Controls(“保存和发送”).Enabled=False


感谢您的帮助。

有关Microsoft提供的Ribbon UI示例/文档,他们将建议您使用

在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编辑器

然后,打开您的文件。转到文件/后台视图,您应该会看到
保存并发送
选项卡已被删除:

注意:这已从后台视图禁用了整个“保存和发送”选项卡。应该可以使用XML对此进行微调,即启用选项卡,但禁用其中的特定控件(例如,可能您只想禁用
作为附件发送
,但希望保留启用的其他选项,等等)但是我还没有完全设计出XML层次结构来仅禁用特定的
作为附件发送
控件

希望这有帮助

根据评论更新

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

2) 不幸的是,这与Excel 2003或更早版本不兼容。CustomUI/XML不是传统XLS文件的一部分,因此不能在这些版本中实现。对于2003/以前版本的Excel,您必须使用传统的
命令栏
,它可以通过VBA进行控制。放一些VBA代码来检查Excel的哪个版本相对容易,并且运行一个子程序来禁用某些
CommandBar
/控件(仅当用户在2003年或以前的版本时)

如果尝试将其保存到XLS文件,您将收到一条警告,指示此功能与文件类型不兼容:


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

我尝试了下面列出的命令,这些命令正在禁用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

这个命令对我有用

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


如果您试图阻止保存,处理“工作簿\u BeforeSave”事件不是更好吗?请参阅以获取答案。+1@SkipIntro这是功能区/XML编辑的作业。链接的答案可能需要更多细节,以便OP实施。我相信这是
filesendaAttachment
按钮控件。首先,非常感谢您的回答。在我验证答案之前,有两个快速问题:1。这会链接到有问题的excel文件而不是整个excel吗?换句话说,一旦用户关闭我的xls文件,他是否会恢复其“正常”配置?2.对于仍在使用excel 2003的我的用户,此excel文件是否仍然有效?提前感谢您的帮助。@Hubert我将更新我的答案以解决您的两个问题。@David Zemens如何禁用“另存为”?我没有找到一个有效的解决方案。你应该问一个新问题,而不是劫持对这个问题的评论。为这个迟来的答案欢呼+1,但值得注意的是,此方法对所有Excel文件禁用这些控件,实际上对整个Excel应用程序禁用这些控件,除非您重新启用它们。