HAKADORI その他

InDesign で自動組版【Excel でコマ配置編】

2018.05.09 水

こんにちは、デジタル事業本部の藤田です。

前回に続き AppleScript による自動組版の話です。今回は作成したコマを台紙に貼っていく作業の自動化です。Excel で作成した台割から規則に従って InDesign へコマを貼る工程を AppleScript で操作します。

● コマの準備

前回の記事でデータベースからコマを作成しました。

作成されたコマファイル

作成されたコマファイル

この作成したコマにはあらかじめ一意のファイル名が規則通りにつけられており、台割にはこのファイル名のコマが何ページのどこ(何番目)に入るのかが記載されています。

Excel で作成された台割

Excel で作成された台割

● 台割の作成

台割は、ページ名コマ番号コマサイズファイル名で構成されています。これらの情報は FileMakerPro データベースから Excel に書き出して作成します。台割は書き出したままの状態から順番を並べ替えて整える作業が必要です。

  • A列 ページ名:コマが配置される対象ページ名
  • B列 コマ番号:ページ内のコマの順番
  • C列 コマサイズ:ページ内に占めるコマの大きさの比率
  • D列 ファイル名:InDesign コマファイルの名前

データベースから書き出したままの台割

データベースから書き出したままの台割

ページ名/コマ番号順で並べ替え

まず、シート上の値が入力されている範囲を選択して「並べ替え/フィルター > ユーザー設定の並べ替え...」を選択します。

並べ替え/フィルター > ユーザー設定の並べ替え...

並べ替え/フィルター > ユーザー設定の並べ替え...

ページ名を最優先キーにして、コマ番号を次に優先するキーに設定します。
並べ替えの設定

並べ替えの設定

OK ボタンを押して実行すると、ページ名とコマ番号での並べ替えができます。

ページ名とコマ番号で並べ替え

ページ名とコマ番号で並べ替え

分数の書式

さらに、コマサイズはページ内の占める面積を分数であらわしています。このコマサイズがページごとに合計して「1」となるかどうかを計算します。FileMakerPro から書き出した状態の Excel はセルに 1/2 と値が入っていても書式が文字列として認識されており、分数として認識されるための工夫をしないといけません。というわけで分数として計算ができる列を新たに用意します。
1行目に コマサイズ計算用(E列)と コマサイズ合計(F列)という見出しを追加します。コマサイズ計算用列は「セルの書式設定 > 表示形式」を 分数 に設定します。

セルの書式設定 > 表示形式を分数に設定

「セルの書式設定 > 表示形式」を「分数」に設定

コマサイズ列をコピーして、コマサイズ計算用列に対し「貼り付け > 値の貼り付け」をクリックします。

「値の貼り付け」をクリック

「値の貼り付け」をクリック

コマサイズ計算用列にコピーされます。

コマサイズ計算用列にコピー

コマサイズ計算用列にコピー

コマサイズ計算用列の値が分数の書式でコピーされた…と思いきややはり文字列のままで書式が変わっていなかったりします。このような場合はセルの内容をカーソルで選択すると書式が変更されます。といっても、セルひとつひとつを選択していくのも大変なので、今回は VBA で一括処理をしてみます。書式を変更したいセルをすべて選択してから VBE(Visual Basic Editor)を起動しイミディエイトウィンドウに下記のコードを一行書くだけです。

 Selection.Value = Selection.Value 

※選択したセルの値を入れ直す = セルの本来の書式が反映される

イミディエイトウィンドウにコードを入力

イミディエイトウィンドウにコードを入力

コードと同じ行にカーソルを置いて[enter]キーを押すとセルの書式が変わります。下の図は 1/2 の実体は 0.5 なのでセルの書式が分数に変更されたことをあらわしています。
セルの書式が分数に変更

セルの書式が分数に変更

ページ名ごとにコマサイズを計算

次に、コマサイズ合計 にはページ名ごとにコマサイズを計算していく関数を入力します。とりあえずセルF1に下記の関数を入力します。

 =IF(A2=A1,F1+E2,E2
ページ名ごとにコマサイズを計算していく関数

ページ名ごとにコマサイズを計算していく関数

※同じ行のページ名が上のセルと同じであれば上のセルのコマサイズを足した値
※同じ行のページ名が上のセルと違っていればコマサイズ計算用列の値

コマサイズ合計列も「セルの書式設定 > 表示形式」を 分数 に設定しセルF1に入力した関数を下にドラッグしてフィルコピーします。これでページ名ごとにコマサイズの計算ができます。

ページ名ごとにコマサイズの計算

ページ名ごとにコマサイズの計算

ページ名ごとに罫線を引く

もうちょっと見やすくするためにページ名ごとに罫線を引きます。条件付き書式→書式ルールの編集で、「数式を使用して、書式設定するセルを決定」を選択し下記の関数を入力します。

 =$A1<>$A2  ※書式は、セルの上のみ罫線を適用
ページ名がセルの上下で違う条件をあらわす関数

ページ名がセルの上下で違う条件をあらわす関数

範囲すべてを適用先に設定し OK ボタンを押すとページごとに罫線が引かれます。

ページごとに罫線

ページごとに罫線

コマサイズ合計が合っているかどうか

さらにページ名ごとのコマサイズの計算があっているかどうかのチェックもしてみます。分数表記のページ内の各コマサイズをすべて足すと、理論上は合計が「1」になります。ですが、入力にミスがあったりするなどの理由でコマサイズの合計が「1」じゃないときは行単位でセルを赤くします。条件付き書式→書式ルールの編集で、「数式を使用して、書式設定するセルを決定」を選択し下記の関数を入力します。

 =AND($A2<>$A3,$F2<>1)  ※書式は、「濃い赤の文字、明るい赤の背景」を適用
コマサイズの合計が「1」ではない場合はセルを赤くする

コマサイズの合計が「1」ではない場合はセルを赤くする

範囲すべてを適用先に設定し OK ボタンを押すとコマサイズの合計が「1」ではない行のセルが赤くなります。

ページ名最後の行でセルの値が「1」ではない条件をあらわす関数

ページ名最後の行でセルの値が「1」ではない条件をあらわす

必要に応じてコマサイズなどを修正し問題なければ台割の完成です!

● 台割からコマを配置する

台割が完成したらスクリプトの出番です。コマ配置スクリプトはこの台割 Excel をもとに情報を読み取り InDesign 台紙ドキュメントへコマを配置します。

AppleScript で Excel と InDesign を連動

AppleScript で Excel と InDesign を連動

コマファイルと台割が完成していればあとの手順は単純です。

  • 台割 Excel で配置したい範囲を選択
  • InDesign で台紙ドキュメントを開く
  • スクリプトを実行してコマのあるフォルダを選択

これで、台紙に次々とコマが配置されていきます。

コマが配置される様子

コマが配置される様子(イメージ)

スクリプトは Excel 台割から読み取ったファイル名の InDesign コマを開き、台紙ドキュメントの対象ページへコマ配置処理を繰り返し行います。コマファイルのオブジェクトはすべてグループ化されて台紙に配置されます。台紙上でのコマが配置される位置はコマ番号とコマサイズをもとに座標を計算しています。台紙ドキュメントにページがない場合は自動的に追加しています。

実際は、ページごとにツメやタイトルを設定していますが、今回そのあたりの解説は割愛します。コマをページに配置するのはデータ結合でも可能ですが単一サイズのコマ配置に制限されます。今回のように AppleScript での自動組版なら複数サイズのコマ配置にも対応が可能です。
ただし、今回は限られたパターンのコマサイズしかなかったので決め打ちのレイアウト作成となってしまいました。なので今回の案件でしか活用できません。台割 Excel の設計次第ではもっと複雑なレイアウト作成も可能となるはずなので、汎用性あるコマ配置の仕組みづくりが今後の課題となりそうです。

  • この記事を書いた人

Noriaki Fujita

藤田 徳朗(フジタノリアキ) デジタル事業本部 DXソリューショングループ所属 Scriptを書いたり、アクセス解析をしています。どうぞよろしくお願いします。

-HAKADORI, その他
-, , , , ,