Microsoft
office
PowerPoint
office2013
Office2016

デフォルトの表の書式を変更する

More than 1 year has passed since last update.

tl; dr

オートシェイプには「規定の図形に設定する」というメニューがあるのに、表には「規定の表に設定する」が
無いので XML を直接弄ってスタイルを修正すれことでフォントサイズは弄れたけど、文字の配置は
弄れなかったという話。あとセルの高さはどうやって弄るのか分からん。

前提知識

  • .pptx は、実は zip ファイルなので拡張子を .zip にすると中身を覗けてしまう
  • zip の中身は XML や画像ファイルなどで構成されている

手順

XML エディタをインストール

今回は XML ファイルを修正するのだが、Office が作成する XML ファイルは改行やインデントが省かれていて
人間には読みづらいので、XML エディタを入れて自動インデントをしてから編集すると楽である。

お手軽なのは Notepad++ に XML Tools プラグインを入れる方法ではなかろうか。
普段利用しているエディタでも良い。

.pptx ファイルの拡張子を .zip に変更する

エクスプローラーとかでチャチャッとやってしまえば宜しい。

zip ファイルをエクスプローラーで開く

愛用している ExpLzh で開こうと思ったら、どうやら Office のファイルであることを検知してしまうらしく、
「これ zip じゃねぇ」とお節介を焼いてくる。他のアーカイバーも同様かもしれないので、エクスプローラーで
開くといいと思う。

スライド マスターのファイルを探す

zip ファイルの中の ppt/slideMasters/slideMaster<#>.xml 1がスライド マスターのスタイル ファイルになっている。
表紙、中表紙、コンテンツ、最終スライド等、複数のスライド マスターがあると、どの slideMaster<#>.xml
どのスライド マスターに紐付いているのか、パッと分かる方法が無いのが難点。
良い方法を思いつかなかったので、1つ1つファイルを弄って確認した…。ダルい。

スタイル ファイルを修正する

XMLエディタで開いて自動インデントを掛けたら、下記のようになっているところを修正する。

        <p:otherStyle>
            <a:defPPr>
                <a:defRPr lang="ja-JP" />
            </a:defPPr>
            <a:lvl1pPr marL="0" algn="l" defTabSz="1039033" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
                <a:defRPr kumimoji="1" sz="2000" kern="1200">
                    <a:solidFill>
                        <a:schemeClr val="tx1"/>
                    </a:solidFill>
                    <a:latin typeface="+mn-lt"/>
                    <a:ea typeface="+mn-ea"/>
                    <a:cs typeface="+mn-cs"/>
                </a:defRPr>
            </a:lvl1pPr>
            <a:lvl2pPr marL="519516" algn="l" defTabSz="1039033" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
                <a:defRPr kumimoji="1" sz="2000" kern="1200">
                    <a:solidFill>
                        <a:schemeClr val="tx1"/>
                    </a:solidFill>
                    <a:latin typeface="+mn-lt"/>
                    <a:ea typeface="+mn-ea"/>
                    <a:cs typeface="+mn-cs"/>
                </a:defRPr>
            </a:lvl2pPr>
            <a:lvl3pPr marL="519516" algn="l" defTabSz="1039033" rtl="0" eaLnBrk="1" latinLnBrk="0" hangingPunct="1">
                ……
                (中略)
                ……
            </a:lvl9pPr>
        </p:otherStyle>

Qiita のコード行は強調や色変更ができないので XPath で書くと //p:otherStyle/a:lvl1pPr/a:defRPr/@sz
デフォルトの表のフォントサイズになっている模様。sz="2000" は 20pt ということなので、10.5pt であれば
sz="1050" である。

どうやら a:lvl1pPr が表のタイトル行、a:lvl2pPr が表の本文として扱われるようだが、集計行・最初の列・
最後の列が、どの a:lvl<#>pPr に対応しているのかはよく分からない。

a:lvl<#>pPrは書式設定も出来るようで、例えば algn="l" は左寄せの意味らしい。PowerPoint でいうところの
「文字の配列」を「上下中央」にしたかったので fontAlgn="ctr" を追加してみたが、期待した効果は
得られなかった。

いずれも Office 2013/2016 で動作確認。

セルの高さの設定方法も不明。

うーん、何か良い方法はないですかね…。

参考


  1. <#> は 1 から始まる連番。