動機
コンサルタントなので、ツリー(イシューツリー、ロジックツリー)をよく書く。
パワーポイントのグラフィックは、なるべく自作せずにSmartArtで済ませることにしているのだが(再現性を持たせるため)、ツリーを書くのに適したものがなくて困っていた。
で、作ってみた。
わたし自身いまでも便利につかっており、記事もコンスタントに見ていただいているようですので、
glox
ファイルのダウンロードリンクを追加しました(2021-08-23)
手順概要
- 作りたいものに近いSmartArtから、レイアウト定義を抽出する(今回は階層構造 > 横方向階層)
- サニタリングし、変えたいところを変える(layout1.xml)
- 説明文などを変え(layoutHeader1.xml).gloxファイルを生成する
- テンプレートフォルダに.gloxを入れる
以下、要点に絞って思い出せる程度に記録。
1. レイアウト定義の抽出
- パワーポイントで新規書類作成、白紙のスライドのみにし、必要なSmartArtを挿入、保存
- パワーポイント書類(例えば、プレゼンテーション1.pptx)の拡張子を.zipに変える
- zipを解凍すると、xmlが取り出せるようになる。ppt > diagrams > layout1.xmlとlayoutHeader1.xmlを触ることになる
2. サニタリングし、変えたいところを変える(layout1.xml)
先ずはサニタリング
下記のサイトの「.gloxファイル用にlayout1.xmlファイルを編集するには」を読んで、layout1.xmlをきれいにする。
Office 2007 および Office 2010 向けの Office Open XML を使用して、ユーザー設定の SmartArt レイアウトを作成する
ただしこの2つだけやって、他は省略。
-
dgm:
を消す - レイアウト定義タグの
:dgm
を消す
今回変えたところは下記の通り。
全体を上寄せに
<else name="Name7">
<alg type="hierRoot">
<param type="hierAlign" val="rCtrCh"/>
</alg>
</else>
などにあるval="rCtrCh"
をval="rT"
に変更(2箇所)。
val="lCtrCh"
をval="lT"
に変更(2箇所)。
※上寄せをせずにrCtrCh/lCtrChを残しておけば、中央揃えのツリーになる
図形を「正方形/長方形」に
<alg type="tx"/>
<shape xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" type="roundRect" r:blip="">
などにあるtype="roundRect"
をtype="rect"
に変更(2箇所)。
コネクタを「カギ線コネクタ」に
<alg type="conn">
<param type="dim" val="1D"/>
<param type="begPts" val="midR"/>
<param type="endPts" val="midL"/>
<param type="endSty" val="noArr"/>
</alg>
のパラメータを追加(2箇所)。
<param type="connRout" val="bend"/>
最低フォントサイズを9ptに
<ruleLst>
<rule type="primFontSz" val="5" fact="NaN" max="NaN"/>
</ruleLst>
などにあるval="5"
をval="9"
に変更(3箇所)。
3. 説明文などを変え(layoutHeader1.xml)、.gloxファイルを生成する
layoutHeader1.xmlをいじる
MSDN マガジンのバックナンバーとダウンロード にて、2007年02月号をダウンロードし、chmファイルを適当なツールを用いてhtmlに変換し、「進化したアート2007 Office System でカスタムの SmartArt グラフィックを作成する」という記事を取り出し、SmartArtテンプレートファイル(MSDNExample.glox)をダウンロードする。
(ここが一番大変だったかも)
MSDNExample.gloxの拡張子を.zipに変えて解凍する。解凍してできたフォルダを「issuetree.glox.zip」と名前を変えて、解凍し、issuetree_folderと名付ける。issuetree_folder > diagrams > layoutHeader1.xmlをいじる。
- layoutDefHdrのuniqueIdを変える
-
<title val=""/>
を記入。これがタイトルになる -
<desc val=""/>
を記入。これが説明文になる -
<cat type="other" pri="10000"/>
は変更しなかった
.gloxファイルを生成する
- issue tree_folder > diagrams > layout1.xmlを、上記の2.で作ったlayout1.xmlと差し替える
- issue tree_folder に入り、
_res
diagrams
[Content_Types.xml]
の3つを選択し、右クリック > 送る > 圧縮(zip形式)フォルダー を選択 - できたzipファイルの名前を「issue tree_top.glox」に変更
4. テンプレートフォルダに.gloxを入れる
- Windowsの場合は
C:\Users\[user name]\AppData\Roaming\Microsoft\Templates\SmartArt Graphics
- Macの場合は
/Users/[user name]/Library/Application Support/Microsoft/Office/SmartArt Graphics
にissue tree_top.gloxをコピー
gloxファイルのダウンロードリンク【追加】
SmartArtでイシューツリー(ロジックツリー)を作成 - Releases - GitHub
- issuetree_top.glox ⇒ 上寄せ版
- issuetree_ctr.glox ⇒ 中央寄せ版
実際の作業
実際には試行錯誤しながら開発していた。
段階1:パワポを直接いじる(テンプレートまで作らない)
- 新規パワポ(SmartArtオブジェクトが一つだけのもの)を作成し、パワポをzipにして解凍
- 解凍したフォルダ内のlayout1.xmlをいじる
- 圧縮、リネームし、パワポのSmartArtオブジェクトが変わっていることを確認
段階2:テンプレートにしていじる
- 新規パワポ、zip解凍までは同じ。layout1.xmlは抜き出しておく
- MSDNExample.gloxをzip解凍、生成したフォルダに適当な名前(issuetree_test)をつける
- issuetree_testフォルダ下のlayout1.xmlを1.で抜き出したlayout1.xmlと差し替え
- issuetree_testフォルダ下のlayout1.xmlをいじる
- zip圧縮、issuetree.gloxなどにリネーム、テンプレートフォルダに格納、パワポ起動し動作確認(繰返し)
- layout1.xmlが収束したのちに、layoutHeader1.xmlをいじる
- zip圧縮、issuetree.gloxなどにリネーム、テンプレートフォルダに格納、パワポ起動し動作確認(繰返し)
その他(わからなかったこと)
Visual Studioは使えるのか? Open XML Package Editor for Visual Studioが便利そうであるが、アドインがうまく使えなくて挫折。
参考サイト
Office 2007 および Office 2010 向けの Office Open XML を使用して、ユーザー設定の SmartArt レイアウトを作成する
[the 2007 Microsoft Office system でカスタムスマートアート (Custom SmartArt) を作成する]
(https://blogs.msdn.microsoft.com/tsmatsuz/2007/03/26/the-2007-microsoft-office-system-custom-smartart/)
MSDN マガジンのバックナンバーとダウンロード ⇒ 2007年02月号をダウンロードし、chmファイルを適当なツールを用いてhtmlに変換し、「進化したアート2007 Office System でカスタムの SmartArt グラフィックを作成する」という記事を取り出す