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

    セル内の改行をカウントするExcelマクロ

    「Excel セルの内容 改行を数える VBA」といったキーワード検索…

  2. Office関連

    パスワードが設定されたファイルを開くPowerPointマクロ

    WordやExcelと違って、PowerPointの場合はOpenメソ…

  3. アイコン一覧

    Office 2013 アイコン一覧(C)

    ・Office 2013 アイコン一覧 NUM…

  4. Office関連

    PowerShellからNetOfficeを使ってWordやPowerPointを操作する方法

    前回の記事関連で、WordやPowerPointもドンとこいで…

  5. Excel

    Excel 2016でマップグラフを作成する。

    12月6日、Office Insider向けに、Office 2016…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP