Officeドキュメントを自動化計画 #5 PPT「表の操作」

2019年7月1日

テクノロジー プログラミング

Officeドキュメントで必要不可欠な「表」を調査してみます。 表を扱うにはなんと言ってもExcelアプリなんですが、Wordでも、PowerPointでも、表やグラフを表示する事は日常茶飯事です。 むしろ提案資料で使われるパワポとしては、表を柔軟に操作してナンボという世界なのに、Excelのような便利な扱いができない事に苛立ちを感じてしまいます。 表の中の数値などは、日々どんどん変わっていくものを制度の高い提案資料では最新情報を載せたいのに、いちいち修正するのがめんどくさい・・・ こんな時のために、今回行っているOfficeドキュメント操作が役に立つでしょう。

デフォルトの表を挿入したPPTXデータ

sample_table3.pptx.zip 2x3のデフォルトテーブルを表示したデータを作成してみました。 今回はこの表データを操作してみます。

ソースコード

zip解凍したデータの「ppt/slides/slide3.html」(スライドの3ページ目)のコードは以下の通りです。 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main"> <p:cSld> <p:spTree> <p:nvGrpSpPr> <p:cNvPr id="1" name="" /> <p:cNvGrpSpPr /> <p:nvPr /> </p:nvGrpSpPr> <p:grpSpPr> <a:xfrm> <a:off x="0" y="0" /> <a:ext cx="0" cy="0" /> <a:chOff x="0" y="0" /> <a:chExt cx="0" cy="0" /> </a:xfrm> </p:grpSpPr> <p:sp> <p:nvSpPr> <p:cNvPr id="2" name="Title 1" /> <p:cNvSpPr> <a:spLocks noGrp="1" /> </p:cNvSpPr> <p:nvPr> <p:ph type="title" /> </p:nvPr> </p:nvSpPr> <p:spPr /> <p:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" dirty="0" smtClean="0" /> <a:t>{page-2:title}</a:t> </a:r> <a:endParaRPr lang="en-US" dirty="0" /> </a:p> </p:txBody> </p:sp> <p:sp> <p:nvSpPr> <p:cNvPr id="3" name="Content Placeholder 2" /> <p:cNvSpPr> <a:spLocks noGrp="1" /> </p:cNvSpPr> <p:nvPr> <p:ph idx="1" /> </p:nvPr> </p:nvSpPr> <p:spPr /> <p:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:pPr marL="0" indent="0"> <a:buNone /> </a:pPr> <a:r> <a:rPr lang="en-US" dirty="0" smtClean="0" /> <a:t>{page-2:txt}</a:t> </a:r> <a:endParaRPr lang="en-US" dirty="0" /> </a:p> </p:txBody> </p:sp> <p:graphicFrame> <p:nvGraphicFramePr> <p:cNvPr id="4" name="Table 3" /> <p:cNvGraphicFramePr> <a:graphicFrameLocks noGrp="1" /> </p:cNvGraphicFramePr> <p:nvPr> <p:extLst> <p:ext uri="{D42A27DB-BD31-4B8C-83A1-F6EECF244321}"> <p14:modId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="1127532191" /> </p:ext> </p:extLst> </p:nvPr> </p:nvGraphicFramePr> <p:xfrm> <a:off x="1524000" y="3507154" /> <a:ext cx="3419232" cy="1112520" /> </p:xfrm> <a:graphic> <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/table"> <a:tbl> <a:tblPr firstRow="1" bandRow="1"> <a:tableStyleId>{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}</a:tableStyleId> </a:tblPr> <a:tblGrid> <a:gridCol w="1709616" /> <a:gridCol w="1709616" /> </a:tblGrid> <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>1</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>2</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> </a:tr> <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>3</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>4</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> </a:tr> <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>5</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>6</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> </a:tr> </a:tbl> </a:graphicData> </a:graphic> </p:graphicFrame> </p:spTree> <p:extLst> <p:ext uri="{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}"> <p14:creationId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="2873090306" /> </p:ext> </p:extLst> </p:cSld> <p:clrMapOvr> <a:masterClrMapping /> </p:clrMapOvr> </p:sld> 改行してわかりやすく表示しておきました。 そして、肝心のテーブル箇所は以下の部分です。 <p:graphicFrame> <p:nvGraphicFramePr> <p:cNvPr id="4" name="Table 3" /> <p:cNvGraphicFramePr> <a:graphicFrameLocks noGrp="1" /> </p:cNvGraphicFramePr> <p:nvPr> <p:extLst> <p:ext uri="{D42A27DB-BD31-4B8C-83A1-F6EECF244321}"> <p14:modId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="1127532191" /> </p:ext> </p:extLst> </p:nvPr> </p:nvGraphicFramePr> <p:xfrm> <a:off x="1524000" y="3507154" /> <a:ext cx="3419232" cy="1112520" /> </p:xfrm> <a:graphic> <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/table"> <a:tbl> <a:tblPr firstRow="1" bandRow="1"> <a:tableStyleId>{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}</a:tableStyleId> </a:tblPr> <a:tblGrid> <a:gridCol w="1709616" /> <a:gridCol w="1709616" /> </a:tblGrid> <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>1</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>2</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> </a:tr> <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>3</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>4</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> </a:tr> <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>5</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>6</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> </a:tr> <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>7</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>8</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> </a:tr> </a:tbl> </a:graphicData> </a:graphic> </p:graphicFrame> 「/p:graphicFrame」というタグにtableは入るようですね。

行追加

4行目を追加するには、以下のコードを挿入します。 <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>7</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>8</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> </a:tr> zip圧縮したら、難なく行挿入ができました。

列挿入

次に、それぞれ3カラム目の情報を登録してみます。 <p:graphicFrame> <p:nvGraphicFramePr> <p:cNvPr id="4" name="Table 3" /> <p:cNvGraphicFramePr> <a:graphicFrameLocks noGrp="1" /> </p:cNvGraphicFramePr> <p:nvPr> <p:extLst> <p:ext uri="{D42A27DB-BD31-4B8C-83A1-F6EECF244321}"> <p14:modId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="1127532191" /> </p:ext> </p:extLst> </p:nvPr> </p:nvGraphicFramePr> <p:xfrm> <a:off x="1524000" y="3507154" /> <a:ext cx="3419232" cy="1112520" /> </p:xfrm> <a:graphic> <a:graphicData uri="http://schemas.openxmlformats.org/drawingml/2006/table"> <a:tbl> <a:tblPr firstRow="1" bandRow="1"> <a:tableStyleId>{5C22544A-7EE6-4342-B048-85BDC9FD1C3A}</a:tableStyleId> </a:tblPr> <a:tblGrid> <a:gridCol w="1709616" /> <a:gridCol w="1709616" /> <a:gridCol w="1709616" /> </a:tblGrid> <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>1</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>2</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> </a:tr> <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>3</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>4</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>--</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> </a:tr> <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>5</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>6</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>--</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> </a:tr> <a:tr h="370840"> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>7</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>8</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>--</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> </a:tr> </a:tbl> </a:graphicData> </a:graphic> </p:graphicFrame> table箇所を上記のようにしてみました。 やった内容は以下の2点です。 1. 3カラム目にあたる箇所にそれぞれ下記コードを挿入。 <a:tc> <a:txBody> <a:bodyPr /> <a:lstStyle /> <a:p> <a:r> <a:rPr lang="en-US" /> <a:t>--</a:t> </a:r> </a:p> </a:txBody> <a:tcPr /> </a:tc> 2. 「a:tblGrid」にサイズ情報を追加 <a:tblGrid> <a:gridCol w="1709616" /> <a:gridCol w="1709616" /> <a:gridCol w="1709616" /> </a:tblGrid> ここで表示のサイズとカラム数を調整しているようです。 ちなみに、1行目は、2カラムのままにしていたんですが、自動で空セルが生成されるようです。 表の操作には、分割セルや、空セルのControlなど、まだまだ未知数のものもあるようなので、今後見つけ次第調査していこうと思います。

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。