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関連

    PDFファイルに差し込み印刷するVBAマクロ

    このページにもあるように、AcrobatはOLEオートメーション機能に…

  2. Office関連

    [VBA]ユーザーフォーム上のコンボボックスでオートコンプリート機能を実装する方法

    MSDNフォーラムに「ユーザーフォーム上のコンボボックスで、任意の文字…

  3. Office関連

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

    Wordマクロをテンプレートにして使用する場合、通常そのテンプレートフ…

  4. Office アドイン

    [Office Scripts]押さえておきたい基本的なポイント

    Office Scriptsでコードを書くにあたり、ハマりそうなポイン…

  5. Office関連

    漢字かな交じり文をひらがなにするマクロ

    Yahoo!のテキスト解析Web API(ルビ振り)を使用して、漢字か…

  6. Office関連

    Excel REST APIをPowerShellから呼び出す方法

    以前Excel REST APIをVBAから呼び出す方法を紹介しました…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP