表組 空セルの結合(下の行と)indesign C2

[4240]表組 空セルの結合(下の行と)indesign C2 | 投稿者:eritan | 投稿日:2010/02/22(Mon) 13:15:59
はじめての書き込み失礼いたします。

[992]の質問で横の列が空の場合セル結合するスクリプトがございましたが、
https://dtp-bbs.com/indesignbbs/archives/992_20080411173339.html

下のセルが空のとき、下の行とセル結合するスクリプトを記述したいのですが、うまくいきません。

2行を選択して実行するスクリプトは見つけられたのですが
一括で処理したいのです。(添付画像のように)

IndesignCS2で使えるスクリプトについて、
何かアドバイスいただけないでしょうか。

***縦に2つのセルを選択して実行***
(function (){
   var tableObj = app.activeDocument.selection[0];
   for (var i=tableObj.cells.length-2; i>=0; i--){
   c1 = tableObj.cells[i].name.split(":");
   for (var j=tableObj.cells.length-1;j>i;j-- ){
   c2 = tableObj.cells[j].name.split(":");
   if (c1[0] == c2[0]) tableObj.cells[i].merge(tableObj.cells[j]);
}
}
}) ();
» 1
[4241]Re: 表組 空セルの結合(下の行と)indesign C2 | 投稿者:mg | 投稿日:2010/02/22(Mon) 13:54:05
以前に書いたcolumns方向の結合スクリプトを
columns→rowsで書き換えてみました参考になれば

(function(){
var selObj = app.selection[0];

//選択した行が2つ以上のときに処理する。
var rowLng = selObj.rows.length;
if(rowLng >=2){
   var baseCell=selObj.cells[0].name.split(":");
   //セルの開始位置
   var baseCe=baseCell[1]-=0;//ゼロをひいて数値にする
   var colObj=selObj.columns;
   for(var co=0; co < colObj.length; co++){
       for(var ce=rowLng+baseCe-1; ce > baseCe; ce--){
           if(colObj[co].cells[ce].contents ==""){            
               colObj[co].cells[ce].merge(selObj.columns[co].cells[ce-1]);
               }
           }
       }
   }
else{alert("Select 2 rows at least")}
alert("Merge completes")
})();    
» 2
[4242]Re: 表組 空セルの結合(下の行と)indesign C2 | 投稿者:eritan | 投稿日:2010/02/22(Mon) 14:11:56
早速ありがとうございます。

複数行選択して実行してみたところ、一番左の列の下の2行のみがセル結合されました。

文字が入っているセルから、空セルを全て(2行以上の場合でも)行で結合する事は可能でしょうか?

実行したい列を全部選択して一括で処理できたら一番助かります。
説明が分かりにくかったらすみません。
» 3
[4244]Re: 表組 空セルの結合(下の行と)indesign C2 | 投稿者:mg | 投稿日:2010/02/22(Mon) 15:36:14
CS2だと結合セルを再度結合できないのですね。エラーになります。
失礼しました。

これでどうでしょう?
だたし、1行目が空セルだと、空セルが続いていても結合はしません。

(function(){
var selObj = app.selection[0];

//選択した行が2つ以上のときに処理する。
var rowLng = selObj.rows.length;
if(rowLng >= 2){
var baseCell=selObj.cells[0].name.split(":");
//セルの開始位置
var baseCe=baseCell[1]-=0;//ゼロをひいて数値にする
var colObj=selObj.columns;
for(var co=0; co < colObj.length; co++){
/////CS2用
var empArr=[];//空セル用配列
for(var ce=rowLng+baseCe-1; ce >= baseCe; ce--){
if(colObj[co].cells[ce].contents ==""){
empArr.push(ce);//空セルのceを入れておく
}
else{
colObj[co].cells[ce].merge(colObj[co].cells[empArr[0]]);
empArr=[];//初期化
}
}
}
}
else{alert("Select 2 rows at least");}
alert("Merge completes");
})();    
» 4
[4245]Re: 表組 空セルの結合(下の行と)indesign C2 | 投稿者:eritan | 投稿日:2010/02/22(Mon) 16:05:23
すごいです!問題なく実行することができました。
これで、ものすごく作業が楽になります。
本当にありがとうございました。
» 5
[4359]Re: 表組 空セルの結合(下の行と)indesign C2 | 投稿者:eritan | 投稿日:2010/03/08(Mon) 09:51:59
以前、こちらの掲示板でお世話になりました。

空セルの列結合の処理が可能となったのですが、ページをまたぐと「merge complete」とメッセージが出ながらもセル結合が出来ない事がわかりました。

Indesign CS2を使用しております。
可能でしたら、アドバイス頂けると幸いです。
宜しくお願いいたします。
» 6
[4360]Re: 表組 空セルの結合(下の行と)indesign C2 | 投稿者:eritan | 投稿日:2010/03/08(Mon) 10:23:50
度々もうしわけありません。

ページをまたぐことが原因ではなく、
選択した行が結合されるわけではなく、
常に一番左の列が結合される処理でした。

選択した列の、下が空セルの場合の処理方法を教えて頂けると幸いです。

大変申し訳ありませんが、宜しくお願いいたします。
» 7
[4361]Re: 表組 空セルの結合(下の行と)indesign C2 | 投稿者:mg | 投稿日:2010/03/08(Mon) 11:09:46
すみません、アラートの位置は処理の有無にかかわらず出るようになってしまってます。

>ページをまたぐことが原因ではなく、
選択した行が結合されるわけではなく、
常に一番左の列が結合される処理でした。

どんな状況なのかよくわからないのですが、一部結合された表の他の部分を選択して結合しようとするとエラーになる場合があります
» 8
[4362]Re: 表組 空セルの結合(下の行と)indesign C2 | 投稿者:eritan | 投稿日:2010/03/08(Mon) 11:46:32
すみませんでした。
処理について理解できました。
これで作業進められそうなので、工夫して使って行きたいとおもいます。

ありがとうございました。
この記事の書き込み元へのリンク (コメントや質問などはこちらへどうぞ)

このページをシェア