Office 2010 Backstage ビューでカスタム コマンドを追加し、コントロールの形式を変更する

Office Visual How To

概要:   新しい Office 2010 Backstage ビューでファスト コマンド ボタンを作成する方法、および Backstage ビューが表示されるときにコントロールの形式を設定する方法について説明します。

適用対象: Excel 2010 | Office 2010 | Open XML | PowerPoint 2010 | VBA | Word 2010

公開:  2010 年 4 月

**提供元:**Michael Case 氏、iSoftStone

概要

Microsoft Office 2010 の新機能である Microsoft Backstage ビューは、従来の [ファイル] メニューに代わるものです。Backstage ビュー は、新規ファイルや既存ファイルの表示、ドキュメントのプロパティの定義、情報の共有などの管理タスクを集中的に実行する場所を提供します。Microsoft Office Fluent リボンと同様に、Backstage ビューも、XML を使用して構造、コンポーネント、コールバック プロシージャを定義し、これらのコンポーネントに機能を提供することで、完全に拡張できます。

この記事では、ドキュメントごとにカスタマイズされた Backstage ビューを作成する方法を説明します。Backstage ビューのカスタマイズにはカスタム ファスト コマンド ボタンが含まれ、コールバック プロシージャを使用して、Backstage ビューが表示される時点での条件に基づいてコントロール グループの表示方法が動的に設定されます。

この記事では、Trang Luu のカスタム UI エディター (英語)を使用して、カスタム ユーザー インターフェイス (UI) の XML を Microsoft Excel 2010 のブックに簡単に追加できるようにします。この記事で説明する手順を実行するには、Custom UI Editor をダウンロードしてインストールする必要があります。

コード化する

この記事では、XML と VBA コードの組み合わせを使用して、Microsoft Excel 2010 ブックの Backstage ビューをカスタマイズする方法について説明します。XML では、Backstage ビューに表示するカスタム タブとコントロールを定義します。VBA コードでは、カスタム UI XML で定義されているコールバック プロシージャに必要な機能を提供します。

この記事では、次の手順に従って、Excel 2010 ブックの Backstage ビューをカスタマイズします。

  1. Excel ブックを作成する

  2. カスタム UI XML を追加する

  3. VBA コールバック コードを追加する

  4. カスタム Backstage ビュー ページを表示する

手順

新しい Excel ブックを作成する

この記事では、新しい Excel 2010 ブックにカスタム UI XML と VBA コードを追加します。この Excel 2010 ブックは、VBA コードをサポートするためにマクロ有効ブック (.xlsm) として作成する必要があります。

  1. Microsoft Excel 2010 を起動します。

  2. [ファイル] タブをクリックします。

  3. [名前を付けて保存] をクリックします。

  4. [保存の種類] ボックスの一覧で、[Excel マクロ有効ブック (*.xlsm)] を選択します。

  5. [保存] をクリックして作業を終了します。ドキュメントは C:\Temp\BackstageViewCustomCommands.xlsm として保存します。

カスタム UI XML を追加する

カスタム UI エディターを使用すると、前の手順で作成した Excel 2010 ブックにカスタム UI XML を簡単に追加できます。

  1. カスタム UI エディターを起動します。

  2. [ファイル] メニューの [開く] をクリックします。

  3. ファイル C:\Temp\BackstageViewCustomCommands.xlsm (前の手順で作成したファイル) を選択し、[開く] をクリックします。

  4. [挿入] メニューの [Office 2010 Custom UI Part] をクリックします。これで CustomUI14.xml ファイルがドキュメント内に作成されます。

  5. customUI14.xml ファイルを選択し、次の XML をファイルにコピーします。

    <?xml version="1.0" encoding="utf-8"?>
    <!-- customUI is the root tag of all Fluent UI customizations. -->
    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"
              onLoad="OnLoad">
      <!—The Backstage element defines the custom structure of the Backstage UI. -->
      <backstage onShow="OnShow">
        <!-- The tab element defines the name to display on the 
             Backstage view tab and the controls to display 
             on the page when the user selects the tab. -->
        <tab id="dynamicFormatTab" label="Dynamic Control Format" 
             insertAfterMso="TabInfo">
          <firstColumn>
            <!-- The getStyle and getHelperText callbacks 
                  dynamically set the Work Status Group style 
                  and text. -->
            <group id="workStatusGroup" label="Work Status" 
                   getHelperText="GetWorkStatusHelperText" 
                   getStyle="GetWorkStatusStyle" >
              <primaryItem>
                <button id="sendStatusMailButton" 
                        label="Send Status E-Mail" 
                        imageMso="ReplyAll" />
              </primaryItem>
            </group>
          </firstColumn>
        </tab>
        <!-- This button defines a fast command that displays in the 
             built-in Fast Command task bar above the Backstage view tabs. -->
        <button id="saveAndCloseButton" label="Save &amp;&amp; Close" 
                insertAfterMso="FileSaveAs" imageMso="SourceControlCheckIn" 
                onAction="SaveAndClose" isDefinitive="true" />
      </backstage>
    </customUI>
  6. [ファイル] メニューで [保存] をクリックします。

  7. カスタム UI エディターを閉じます。

VBA コールバック コードを追加する

VBA コールバック プロシージャにより、前の手順でカスタム UI XML によって追加されたカスタム Backstage ビュー コンポーネントに機能が追加されます。

  1. Microsoft Excel 2010 を起動します。

  2. [ファイル] タブをクリックします。

  3. [開く] をクリックします。

  4. C:\Temp\BackstageViewCustomCommands.xlsm ブックを開きます。

  5. [開発] タブをクリックします。

  6. [Visual Basic] をクリックします。

  7. [挿入] メニューで [標準モジュール] をクリックします。

  8. [Module1] を選択し、そのファイル内に次の VBA コードをコピーします。

    ' Reference to the ribbon for refreshing the UI.
    Public processRibbon As IRibbonUI
    
    ' Variable that defines the Work Status group display style.
    Public workStatusGroupStyle As String
    
    ' Called when the Backstage view is first loaded.
    ' Stores a reference to the ribbon for refreshing the UI.
    Sub OnLoad(ribbon As IRibbonUI)
      Set processRibbon = ribbon
    End Sub
    
    ' Called each time the Backstage view is displayed.
    ' Calculates the time since the workbook was last saved and sets the
    ' workStatusGroupStyle variable to the appropriate
    ' BackStageGroupStyle enumeration value.
    Sub OnShow(ByVal contextObject As Object)
      timeSinceLastSave = _
          DateDiff("s", FileDateTime(ActiveWorkbook.FullName), Now)
    
      'If over 20 seconds use the Error style.
      If (timeSinceLastSave > 20) Then
        'This enumeration was renamed after the Office 2010 beta release.
        'For the beta release, use OutSpaceSlabStyle.OutSpaceSlabStyleError.
        workStatusGroupStyle = BackstageGroupStyle.BackstageGroupStyleError
    
      'If over 5 seconds but under 20 seconds use the Warning style.
      ElseIf (timeSinceLastSave > 5) Then
        'This enumeration was renamed after the Office 2010 beta release.
        'For the beta release, use OutSpaceSlabStyle.OutSpaceSlabStyleWarning.
        workStatusGroupStyle = BackstageGroupStyle.BackstageGroupStyleWarning
      
      'Otherwise use the Normal style.
      Else
        'This enumeration was renamed after the Office 2010 beta release.
        'For the beta release, use OutSpaceSlabStyle.OutSpaceSlabStyleNormal.
        workStatusGroupStyle = BackstageGroupStyle.BackstageGroupStyleNormal
      End If
      
      ' Invalidate is called to reset the UI causing all controls
      ' to redisplay and execute all relevant callbacks.
      processRibbon.Invalidate
    End Sub
    
    ' Group Style for the Work Status group.
    ' The workStatusGroupStyle variable is set during the OnShow callback.
    Sub GetWorkStatusStyle(control As IRibbonControl, ByRef returnedVal)
      returnedVal = workStatusGroupStyle
    End Sub
    
    ' Helper Text for the Work Status group.
    ' Text returned is based on the current workStatusGroupStyle value
    Sub GetWorkStatusHelperText(control As IRibbonControl, ByRef returnedVal)
      Select Case workStatusGroupStyle
        Case BackstageGroupStyle.BackstageGroupStyleNormal
          returnedVal = "Still within date completion range."
        Case BackstageGroupStyle.BackstageGroupStyleWarning
          returnedVal = "Warning: Nearing contract completion date."
        Case BackstageGroupStyle.BackstageGroupStyleError
          returnedVal = "Contract completion date has been exceeded."
      End Select
    End Sub
    
    'Called when the Save & Close fast command button is clicked.
    Sub SaveAndClose(control As IRibbonControl)
      'Save the changes in the Active workbook
      ActiveWorkbook.Save
    End Sub
  9. [ファイル] メニューで [保存] をクリックします。

  10. Visual Basic for Applications エディターを閉じ、ブックに戻ります。

カスタム Backstage ビュー ページを表示する

前の例で定義したカスタム Backstage ビュー ページおよびファスト コマンド ボタンを表示するには、[ファイル] タブを選択して Backstage ビューを表示する必要があります。Backstage ビューを表示した後、組み込みの [情報] タブの下にある [Dynamic Control Format] タブを選択します。[Dynamic Control Format] タブを選択すると、カスタムの [Dynamic Control Format] Backstage ビュー ページを表示して操作できます。

[保存して閉じる] ファスト コマンド ボタンは、Backstage ビューの組み込みの [名前を付けて保存] ファスト コマンド ボタンの下に、他の組み込みファスト コマンド ボタンと共に表示されます。

図 1. カスタム Backstage ビュー

カスタム [Backstage ビュー] ページ

手順

この Office 2010Backstage ビューを拡張して、独自のニーズをサポートするためのカスタム ページやファスト コマンド ボタンを含めるには、カスタム UI XML を Office ドキュメントに追加すると共に、カスタム UI XML で指定されたコールバック用の機能を実現する VBA コードを追加します。

この記事のサンプル コードでは、Backstage ビュー が表示されるたびにアクションを実行する方法を示します。また、頻繁に実行するアクションのためのカスタム ファスト コマンド ボタンを作成する方法も示します。

カスタム UI を初期化する

Backstage ビュー コントロールの再表示が必要な変更が、コールバック プロシージャによって行われることがあります。Backstage ビュー コントロールを再表示するには、RibbonUI コントロールの Invalidate メソッドを呼び出します。

次のコード例では、カスタム UI が読み込まれるときに RibbonUI コントロールへの参照を保存する方法を示します。customUI エレメントには onLoad 属性が含まれます。この場合、この属性ではコールバック OnLoad が指定されています。OnLoad コールバックは、RibbonUI オブジェクトに対する参照を保存します。このオブジェクトは、Backstage ビュー コントロールを再表示するためにコールバックで使用されます。

<!-- customUI is the root tag of all Fluent UI customizations. -->
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui"
      onLoad="OnLoad">
'Reference to the ribbon for refreshing the UI.
Public processRibbon As IRibbonUI

'Store a reference to the ribbon for refreshing the UI.
Sub OnLoad(ribbon As IRibbonUI)
  Set processRibbon = ribbon
End Sub

Backstage ビューが表示されるときにアクションを実行する

Backstage ビューが表示されるときに何らかの処理を実行することが必要な場合があります。たとえば、前回保存したときのブックに基づいてコントロールの形式を変更するような場合です。この例の [Work Status] グループは、赤または黄の強調表示を使って、ブックが最近保存されていないことに注意を促します。値はブックが保存されてからの期間に依存します。Backstage ビュー グループは、getStyle コールバックを使用して表示スタイルを設定します。このコールバックは、BackstageGroupStyle 列挙値のいずれかを返します。

  • BackstageGroupStyleNormal。特別なビジュアル処理が行われないグループです。

  • BackstageGroupStyleWarning。黄色で強調表示されるグループです。

  • BackstageGroupStyleError。グループは赤色で強調表示されます。

次のカスタム UI XML の例では、Backstage ビューが表示されるときの条件に基づいてページでのコントロールの表示方法を動的に定義するためにコールバックを指定する方法を示します。backstage エレメントで指定されている onShow コールバックは、ブックが最後に保存されてからの時間を評価し、[Work Status] グループのスタイルを設定します。onShow コールバックは、Backstage ビューが表示されるたびに実行します。[Work Status] グループで指定されている getStyle および getHelperText コールバックは、onShow コールバックによって設定されたスタイルに基づいて、適切なスタイルとテキストを返します。

<backstage onShow="OnShow">
  <tab id="dynamicFormatTab" label="Dynamic Control Format" 
       insertAfterMso="TabInfo">
    <firstColumn>
      <!-- The getStyle and getHelperText callbacks 
            dynamically set the Work Status Group style 
            and text -->
      <group id="workStatusGroup" label="Work Status" 
             getHelperText="GetWorkStatusHelperText" 
             getStyle="GetWorkStatusStyle" >
        <primaryItem>
          <button id="sendStatusMailButton" 
                  label="Send Status E-Mail" 
                  imageMso="ReplyAll" />
        </primaryItem>
      </group>

次のコード例では、backstage エレメントの onShow コールバックである OnShow が、ブックが最後に保存されたときに基づいて [Work Status] グループを強調表示する方法を示します。OnShow コールバックは、ブックが保存されてから経過した秒数を計算し、workStatusGroupStyle 変数を適切な BackStageGroupStyle 列挙値に設定します。workStatusGroupStyle 変数が設定されると、RibbonUI オブジェクトの Invalidate メソッドが Backstage ビュー コントロールを再表示します。Invalidate メソッドが呼び出されると、[Works Status] グループの getStyle および getHelperText コールバックが再実行されます。

'Called each time the Backstage view is displayed.
'Calculates the time since the workbook was last saved and sets the
' workStatusGroupStyle variable to the appropriate
' BackStageGroupStyle enumeration value.
Sub OnShow(ByVal contextObject As Object)
  timeSinceLastSave = _
      DateDiff("s", FileDateTime(ActiveWorkbook.FullName), Now)

  'If over 20 seconds use the Error style.
  If (timeSinceLastSave > 20) Then
    'This enumeration was renamed after the Office 2010 beta release.
    'For the beta use OutSpaceSlabStyle.OutSpaceSlabStyleError.
    workStatusGroupStyle = BackstageGroupStyle.BackstageGroupStyleError

  'If over 5 seconds but under 20 seconds use the Warning style.
  ElseIf (timeSinceLastSave > 5) Then
    'This enumeration was renamed after the Office 2010 beta release.
    'For the beta use OutSpaceSlabStyle.OutSpaceSlabStyleWarning.
    workStatusGroupStyle = BackstageGroupStyle.BackstageGroupStyleWarning
  
  'Otherwise use the Normal style.
  Else
    'This enumeration was renamed after the Office 2010 beta release.
    'For the beta use OutSpaceSlabStyle.OutSpaceSlabStyleNormal.
    workStatusGroupStyle = BackstageGroupStyle.BackstageGroupStyleNormal
  End If
  
  'Invalidate is called to reset the UI causing all controls
  ' to redisplay and to execute all relevant callbacks.
  processRibbon.Invalidate
End Sub

次のコード例では、[Work Status] グループの getStyle コールバック、GetWorkStatusStyle コールバック、getHelperText コールバック、および GetWorkStatusHelperText コールバックを使用し、ブックが最後に保存されてからの時間を基にしてグループを強調表示する方法を示します。GetWorkStatusStyle コールバックは、Backstage ビューが表示されるときに OnShow コールバックによって設定される workStatusGroupStyle 変数の BackstageGroupStyle 値を返します。GetWorkStatusHelperText は GetWorkStatusStyle コールバックと並行して動作し、BackstageGroupStyle 値の適切なテキストを返します。

'Group style for the Work Status group.
'The workStatusGroupStyle variable is set during the OnShow callback
Sub GetWorkStatusStyle(control As IRibbonControl, ByRef returnedVal)
        returnedVal = workStatusGroupStyle
End Sub

'Helper text for the Work Status group.
'Text returned is based on the current workStatusGroupStyle value.
Sub GetWorkStatusHelperText(control As IRibbonControl, ByRef returnedVal)
  Select Case workStatusGroupStyle
    Case BackstageGroupStyle.BackstageGroupStyleNormal
      returnedVal = "Still within date completion range."
    Case BackstageGroupStyle.BackstageGroupStyleWarning
      returnedVal = "Warning: Nearing contract completion date."
    Case BackstageGroupStyle.BackstageGroupStyleError
      returnedVal = "Contract completion date has been exceeded."
  End Select
End Sub

ファスト コマンド ボタンを作成する

頻繁に使用するオプションがある場合は、ファスト コマンドを使用すると便利です。ここでは、現在のブックを保存し、Backstage ビューを閉じて、ブックに戻るファスト コマンド ボタンの作成について説明します。

次のカスタム UI XML の例では、ファスト コマンド ボタンの定義方法を示します。ファスト コマンド ボタンの button エレメントは、backstage エレメントの子として定義します。ラベルに含まれるアンパサンド (&) は、連結された 2 つのトークン &amp;&amp; を使用して追加されます。[Save & Close] ボタンを組み込みの [名前を付けて保存] ファスト コマンド ボタンの下に表示するため、insertAfterMSO 属性には FileSaveAs が設定されます。OnAction コールバックは、ユーザーが [Save & Close] ボタンをクリックするとブックを保存します。isDefinitive 属性は True に設定されていて、ユーザーが [Save & Close] ボタンをクリックすると、Backstage ビューが閉じられてブックに戻ります。

<!-- Backstage defines custom structure of the Backstage UI. -->
<backstage onShow="OnShow">
...
  <!-- This button defines a fast command that displays in the 
       built-in fast commands above the Backstage view tabs. -->
  <button id="saveAndCloseButton" label="Save &amp;&amp; Close" 
          insertAfterMso="FileSaveAs" imageMso="SourceControlCheckIn" 
          onAction="SaveAndClose" isDefinitive="true" />
</backstage>

次のコード例では、[Save & Close] ファスト コマンド ボタンの onAction コールバックである SaveAndClose が、現在のブックを保存して Backstage ビューを閉じる方法を示します。SaveAndClose コールバックは、現在のブックだけを保存します。Backstage ビューを閉じて現在のブックに戻るようにするには、カスタム UI XML でコントロールの isDefinitive 属性を設定します。

'Called when the Save & Close fast command button is clicked.
Sub SaveAndClose(control As IRibbonControl)
  'Save the changes in the Active workbook.
  ActiveWorkbook.Save
End Sub
ビデオ

ビデオを見る

ビデオを見る (英語)

所要時間: 00:08:37 | サイズ: 17.5 MB | 種類: WMV

クリックしてコードを取得

コードを取得する (英語)

関連情報

 

著者について

Michael Case 氏は iSoftStone の上級ソフトウェア開発者であり、クライアントと共にカスタム ソフトウェア ソリューションを作成しています。Michael は Microsoft テクノロジおよび Microsoft .NET Framework を使用したデスクトップ ソリューションおよび Web ベースのソリューションの開発に 16 年以上の経験があります。