基于我在网上找到的一些内容,我需要重建PowerPoint的SaveAs后台选项卡,以便我可以查看用户是否正在尝试执行SaveAs,而不是自PowerPoint事件以来的正常保存操作不提供像Excel和Word那样的信息。
How to Differentiate SaveAs call and Save call in PowerPoint events?
How to capture "Print Tab" click event at the backstage in Outlook 2010 ?
我已经阅读了以下文章。
Temporarily Repurpose Commands on the Office Fluent Ribbon
Introduction to the Office 2010 Backstage View for Developers
Customizing the Office 2010 Backstage View for Developers
我已成功删除了SaveAs选项卡(TabSave)并将其替换为我自己的按钮以触发SaveAs。不幸的是,通过这样做,我丢失了SaveAs选项卡上的其他功能,例如保存到One Drive和Office 365 SharePoint,这将使我们的客户烦恼。
因此,我试图再次构建Tab而没有运气,因为前面提到的stackoverflow文章提示并且我遇到了问题。我开始认为这不太可能。我是在正确的轨道上吗?我唯一的目标是拦截SaveAs操作,并能够告诉它是“SaveAs”而不是正常的“Save”。
有没有人成功完成此操作?它甚至可能吗?如果是这样,您是否愿意共享自定义UI XML?
答案 0 :(得分:0)
我找到了解决问题的方法。
在Office 2013中,他们添加了SaveAs选项卡。在该选项卡上是另存为按钮。不可能在选项卡上重新使用“另存为”按钮,并且看起来不可能像某些人所建议的那样替换SaveAs选项卡而不会丢失功能。
但无论是在BackStage还是功能区上,都可以可靠地重新使用FileSave。
<customUI
xmlns="http://schemas.microsoft.com/office/2009/07/customui"
onLoad="CustomUiOnLoad" >
<commands>
<command idMso="FileSave" onAction="FileSave_OnAction" />
</commands>
</customUI>
调用FileSave_OnAction时,在文档包装器中设置一个标志,以指示保存的来源。
public void FileSave_OnAction(Office.IRibbonControl control, bool cancelDefault)
{
using (var document = new ComWrapper<PowerPoint.Presentation>(Globals.ThisAddIn.Application.ActivePresentation))
using (var docWrapper = DocWrapper<PowerPoint.Presentation>.GetWrapper(document))
{
try
{
cancelDefault = true;
docWrapper.SaveAsUI = false;
docWrapper.Save();
}
finally
{
docWrapper.SaveAsUI = true;
}
}
}