log

PowerPointのスライドからアニメーションがステップ毎に分かれたpdfをつくる

問題

PowerPointでは、クリック毎に要素を表示するようなアニメーションなどを1枚のスライド内でのPowerPoint側のアニメーション機能を用いて行う事が多い。

しかし、PowerPoint 2016 (for mac)では、PDF出力があまりリッチではないようで、アニメーション終了時の状態のスライドだけがアウトプットされる、いわゆる普通のPDF出力しかない (ちなみにKeynoteにはアニメーションの各ステップを出力するオプションがついてるらしい)。

出来ること

以下のようなスライドをf:id:enerick:20160123105731p:plain

以下のように分割する(元のアニメーションつきスライドは非表示&全スライドに同一発適用)。f:id:enerick:20160123105838p:plain

注意:今回紹介する手法では箇条書きのアニメーション表示は適切に分割できない。
箇条書きは一つのテキストボックスオブジェクトなので、オブジェクトの表示・非表示状態を分割基準にしている今回紹介するスクリプトではテキストボックス内の部分的な表示・非表示状態を区別できていない。今回の自分の用途ではそういう使い方がなかったので困らなかったが、暇があったらスクリプトを改良したい。スクリプトgithubにも上がってるみたいなのでforkしたりPRなげたりできる。

調査

調べたところ、アニメーションをステップごとに別スライドに分割するアドインは見つかったりしたものの、mac版のPowerPointでアドインをどう使うのかぶっちゃけ全然わかんなかった。ロードしたらリボンにアドインが出現すると思うんだけど、出現しない。

なのでアドインを使う手法は一旦放置してもうちょっと調べたところ、

というstackoverflowの質問が出てきた。この質問には2つ回答がついてて、一つはやっぱりアドインを使った解決策を提示してるんだけど、もう一方はVBAマクロを掲載しているブログを紹介している。しかも、

In any case, for OSX it's the only working solution I've found so far.

とか言っていて信頼度が俄然上昇する。回答日2015年の8月だしこれはいける気がするぞということで、回答内で紹介されている

Neil Mitchell's Haskell Blog: PowerPoint -> PDF (Part 2)

のマクロを使ってみたところいい感じだったので紹介する。冒頭の結果はこの記事内のマクロを使っている。

やり方

パワーポイントと格闘する人は大体疲弊していて何も考えたくない状態になっていると思うのでスクリーンショットまみれで説明する。環境はMac

  1. メニューバーから マクロ>Visual Basic Editor を開く

    f:id:enerick:20160123110316p:plain

  2. エディタのウィンドウが開くので、自分のスライドのVBAProjectを右クリックしてModuleを追加する。

    f:id:enerick:20160123110618p:plain

  3. 追加されたModule1を開き、Neil Mitchell's Haskell Blog: PowerPoint -> PDF (Part 2) のThe Code以下のソースコードをコピペするf:id:enerick:20160123111100p:plain

  4. エディタを閉じる
  5. リボンのViewからMacrosを開く(AddElements, RemElementsがいる)
    f:id:enerick:20160123111424p:plain
  6. AddElementsを選択してRunすると、元のスライドが非表示になり、アニメーションが展開されたスライドが生成される。f:id:enerick:20160123105838p:plain
  7. 展開されたスライドにはアニメーションは含まれないので、これからPDFを生成する。(PP2016 for macのExportには非表示スライドを除外するオプションがないみたいなので、非表示スライドたちを一旦全て選択→削除してPDFを生成した後、Undoで非表示スライドたちを戻すというやり方をした)

  8. Undoをするか、もう一度Macorsを開いてRemElementsを実行すると展開されたスライドたちが消えて元のスライドたちの非表示状態が解除されて元通りになる。すばらしい。

問題点

  • 箇条書きのアニメーション(1つのテキストボックス内でのアニメーション)が、ちゃんと動いてない。つまり例に使ったスライドで、ちゃんと動いてない(!!!)よく見ると枚数はアニメーションのステップ数の通り複製されているが、テキストボックスが一部表示でなく全部表示になっている。
  • ふつうにスライドを展開するという手法なので、ページ番号をふっている場合、展開後のスライドのページ番号が元のスライドとは展開の数によって変わる。