Office アドイン

[Office用アプリ]「ActiveViewChanged」イベントと「getActiveViewAsync」メソッド

v1.1で追加された、ビューが変更された時に発生するイベント「ActiveViewChanged」と、ビューの状態を取得する「getActiveViewAsync」メソッドの動作をPowerPoint 2013 SP1でテストしてみました。

・Document.ActiveViewChanged event (apps for Office v1.1)
http://msdn.microsoft.com/ja-jp/library/dn482501.aspx
・DocumentActiveViewChangedEventArgs object (apps for Office v1.1)
http://msdn.microsoft.com/ja-jp/library/dn482504.aspx
・Document.getActiveViewAsync method (apps for Office v1.1)
http://msdn.microsoft.com/ja-jp/library/dn482495.aspx

■ マニフェストファイル

<?xml version="1.0" encoding="utf-8"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="TaskPaneApp">
  <Id>97dec43d-61ee-4354-94ca-7d99be051152</Id>
  <Version>1.0</Version>
  <ProviderName>kinuasa</ProviderName>
  <DefaultLocale>ja-jp</DefaultLocale>
  <DisplayName DefaultValue="ActiveViewChangedのテスト用アプリ" />
  <Description DefaultValue="ActiveViewChangedのテストです。"/>
  <Hosts>
    <Host Name="Presentation" />
  </Hosts>
  <Requirements>
    <Sets>
      <Set Name="ActiveView" />
    </Sets>
  </Requirements>
  <DefaultSettings>
    <SourceLocation DefaultValue="http://localhost/ActiveViewChanged.html" />
  </DefaultSettings>
  <Permissions>ReadWriteDocument</Permissions>
</OfficeApp>

■ アプリ本体(ActiveViewChanged.html)

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="robots" content="noindex,nofollow">
        <meta http-equiv="X-UA-Compatible" content="IE=Edge">
        <title>ActiveViewChange</title>
        <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-1.11.0.min.js"></script>
        <script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js"></script>
        <script>
            Office.initialize = function(reason){
                $(document).ready(function(){
                    Office.context.document.addHandlerAsync(Office.EventType.ActiveViewChanged, document_ActiveViewChange, function(asyncResult){
                        msg("1." + asyncResult.status);
                    });
                });
            }
            
            function document_ActiveViewChange(eventArgs){
                msg("2." + eventArgs.type);
                Office.context.document.getActiveViewAsync(function(asyncResult){
                    msg("3." + asyncResult.status);
                    if(asyncResult.status == Office.AsyncResultStatus.Succeeded){
                        msg("4." + asyncResult.value);
                    }
                });
            }
            
            function msg(txt){
                var s = $("#result").val();
                if(s == ""){
                    $("#result").val(txt);
                }else{
                    $("#result").val(s + "\n" + txt);
                }
            }
        </script>
    </head>
    <body>
        <p>
            <textarea id="result" cols="30" rows="30"></textarea>
        </p>
    </body>
</html>

アプリを読み込んで、スライドショーを実行したり表示形式を色々変更したりしたところ、ActiveViewChangedイベントは、スライドショー開始時と終了時、閲覧表示開始時と終了時に発生することが分かりました。

AppsForOffice_v1.1_02_01

AppsForOffice_v1.1_02_02

VBAで言うところのApplication.WindowSelectionChangeイベントと同じなのかと思っていましたが、どうやら違うようです。

また、getActiveViewAsyncメソッドで取得したビューの状態は、スライドショーや閲覧表示開始時には「read」、終了時には「edit」となっていました。

というわけで、ActiveViewChangedイベントとgetActiveViewAsyncメソッドを使えば、スライドショーの実行時や終了時に何かしらの処理を行うことができそうです。

[Office用アプリ]日経ソフトウエア主催アプリ開発コンテストの案内前のページ

Wordのテンプレートをインストールするスクリプト次のページ

関連記事

  1. Office アドイン

    [Office用アプリ]Seller Dashboardの販売者アカウントを作成する。

    Office用アプリをOfficeストアで公開するためにはMicros…

  2. Office関連

    PDFのしおり数を取得するVBAマクロ

    「VBA Acrobat しおり数」といったキーワード検索でのアクセス…

  3. Office関連

    IEサポート終了でVBAマクロはどうなるの?(2)

    ※下記情報は2021年5月時点の情報で、今後状況が変わっていく可能性が…

  4. Office関連

    未読アイテムの件数を取得するOutlookマクロ

    「Outlook 未読 件数 マクロ」といったキーワード検索でのアクセ…

  5. Office関連

    MicrosoftのDictateアドインを試してみました。

    Microsoftがハンズフリー入力をサポートするOffice用(Wo…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

Translate

最近の記事

アーカイブ

PAGE TOP