2016-07-14 12 views
0

これは、私がPowerPointのSaveAs Backstageタブを再構築する必要があることを私がオンラインで見出したいくつかの事柄に基づいて表示されるので、ユーザーがSaveAsを通常のPowerPointイベントはExcelやWordのようにこの情報を提供しないため、操作を保存します。私は以下の記事を行ってきたPowerPointの保存と保存as

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

私は正常に名前を付けて保存]タブ(TabSave)を削除し、名前を付けて保存をトリガするために私自身のボタンで置き換えています。残念なことに、そうすることで、OneAsドライブやOffice 365 SharePointに保存するなど、[SaveAs]タブの他の機能が失われてしまい、顧客を煩わせることになります。

したがって、前述のstackoverflowの記事で示唆しているように、私は運が悪い状態でTabを再構築しようとしましたが、問題にぶつかっています。私はそれが本当に可能ではないと考え始めている。正しい軌道にいるのですか?私の唯一の目的は、SaveAs操作を傍受し、それが「SaveAs」であり、通常の「Save」ではないことを伝えることができることです。

誰でもこれを成功させましたか?それも可能ですか?もしそうなら、カスタムUI XMLを共有したいですか?

+0

FileSaveAsコマンドの目的を変更する場合は、目的を達成する必要があります。バックステージを改ざんする魅力的な理由はありますか? –

+0

はい。私はFileSaveAsの用途を変更しましたが、それだけでは不十分です。上記のドキュメントでは、バックステージ要素の目的を変更することはできません。あなたはそれらを再作成する必要があります。 FileSaveAsの用途を変更しても、[タブセーブ]タブにある[名前を付けて保存]機能が再利用されることはありません。 – tdemay

+0

私の悪い。 SaveAs用途をどのように使用するかについて詳しく説明できますか?ダイアログが表示される前、または保存が完了した後に何かしますか? –

答えて

0

私は私の問題の解決策を見つけました。

Office 2013では、[名前を付けて保存]タブとして追加されました。そのタブには名前を付けて保存ボタンがあります。タブに名前を付けて保存ボタンを再利用することは不可能で、機能を失うことなく提案されているように、[名前を付けて保存]タブを置き換えることができないように見えます。

しかし、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; 
     } 
    } 
}