office
VisualStudio
Word
PowerPoint
Officeアドイン

WordとPowerPointの両方で使えるOfficeアドイン開発

More than 1 year has passed since last update.

Visual Studioで、Officeアドインを作成する場合、

20170713新しいプロジェクト.png

新しいプロジェクトで、WordWebアドインを選ぶと、当たり前ですがWordアドイン専用のアドインとなります。
しかし、

アドインの必要なアプリケーション.png

このようにPowerPointアドインとWordアドインの両方で使えるOfficeアドインは、以下の方法で可能です。

デフォルトのマニフェスト

新しいプロジェクトで生成されるPowerPointアドインのマニフェストは、

PowerPointWebAddinManifest.xml
(以上、省略)
  <!--TaskPane モードの統合の開始。このセクションは、VersionOverrides がない場合か、Office クライアント バージョンがアドイン コマンドをサポートしない場合に使用します。 -->
  <Hosts>
    <Host Name="Presentation" />
  </Hosts>
(中間、省略)
    <Hosts>
      <!-- 各ホストは、異なったセットのコマンドを持つ可能性があります。 -->
      <!-- Excel ホストはブック、Word ホストは文書、PowerPoint ホストはプレゼンテーションです。 -->
      <!-- 上書きするホストが、マニフェストの最上位セクションで宣言されているホストと一致することを確認してください。 -->
      <Host xsi:type="Presentation">
      (省略)
      </Host>
    </Hosts>
(以下、省略)

となっています。
また、新しいプロジェクトで生成されるWordアドインのマニフェストは、

WordWebAddinManifest.xml
(以上、省略)
  <Hosts>
    <Host Name="Document" />
  </Hosts>
(中間、省略)
    <!-- ホスト ノードが必須です。 -->
    <Hosts>
      <!-- 各ホストは、異なったセットのコマンドを持つ可能性があります。 -->
      <!-- Excel ホストはブック、Word ホストは文書、PowerPoint ホストはプレゼンテーションです。 -->
      <!-- 上書きするホストが、マニフェストの最上位セクションで宣言されているホストと一致することを確認してください。 -->
      <Host xsi:type="Document">
      (省略)
      </Host>
    </Hosts>
(以下、省略)

となっています。

マニフェストへの記述

結論から申し上げますと、Hostsの部分にPowerPointアドインとWordアドインの両方の記述を加えます。

MultiWebAddinManifest.xml
(以上、省略)
  <Hosts>
    <Host Name="Document" />
    <Host Name="Presentation" />
  </Hosts>
(中間、省略)
    <!-- ホスト ノードが必須です。 -->
    <Hosts>
      <!-- 各ホストは、異なったセットのコマンドを持つ可能性があります。 -->
      <!-- Excel ホストはブック、Word ホストは文書、PowerPoint ホストはプレゼンテーションです。 -->
      <!-- 上書きするホストが、マニフェストの最上位セクションで宣言されているホストと一致することを確認してください。 -->
      <Host xsi:type="Document">
      (省略*)
      </Host>
      <Host xsi:type="Presentation">
      (省略*)
      </Host>
    </Hosts>
(以下、省略)

同様にExcelも追加可能です。
(省略*)の部分は、デフォルトなりの記述が必要ですので、お忘れなく。

上述のマニフェスト(MultiWebAddinManifest.xml)の場合、
Officeストア上では、
20170718_Officeアドイン表示.png
と表示されますので、
Word|PowerPointとしたいなら、Hostの記述順序を逆にすれば可能です。

Visual Studioによる動作確認

Visual Studioで「開始」では、先に読み込まれたHost(この場合Word)での動作確認になりますので、PowerPointで動作確認する場合は、一時的にWordのHost部分をコメント化します。