終了

表のセルの列を横方向にまとめて結合したい。

エクスプローラー ,
Mar 17, 2021 Mar 17, 2021

リンクをクリップボードにコピー

コピー完了

よろしくお願いいたします。
教えていただきたいことは、表題のとおりです。
ご覧のとおり表メニューからは、それらしきものが見つからず、一行づつ選択しては結合するしかないのでしょうか?

InDesign_表メニュー.jpg

キーワード
手順

表示

1.8K

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
Community Expert ,
Mar 18, 2021 Mar 18, 2021

リンクをクリップボードにコピー

コピー完了

セルの結合という機能は選択した複数セルに対して機能するものです。デフォルトの機能では全ての行を一度に横方向を結合処理出来ませんが、スクリプトなどを利用すると対応できるでしょう。

 

var r=app.selection[0].tables[0].rows;for (var i=0;i<r.length;i++)r[i].merge();

 

ここに挙げたワンライナーは選択したテキストフレームに含まれる1つ目の表の行に対して横方向に結合する機能を書いたものです。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
参加者 ,
Mar 18, 2021 Mar 18, 2021

リンクをクリップボードにコピー

コピー完了

私もスクリプトを書いてみました。

セル選択領域の行単位セル結合です。

 

  • macOS Mojave(10.14.3)
  • InDesign 2021(16.1)
do {
    if (app.documents.length == 0) {
        alert("ドキュメントが開かれていません。");
        break;
    }
    // アクティブドキュメント
    var idDoc = app.activeDocument;
    // 選択オブジェクト
    var selObj= idDoc.selection;
    var targetObjs=[]; 
    for (nPos = 0; nPos < selObj.length; nPos++) {
        if (selObj[nPos].constructor.name=='Cell' ) {
            targetObjs.push(selObj[nPos]);
        }
    }
    if (targetObjs.length == 0) {
        alert("表セルが選択されていません。");
        break;
    }
    for (nPos = 0; nPos < targetObjs.length; nPos++) {
        var idCell = targetObjs[nPos];
        idColSpan = idCell.columnSpan;
        if (idColSpan > 1) {
            idColPos = idCell.parentColumn.index;
            idColEnd = idColPos + idColSpan;
            idRowSpan = idCell.rowSpan;
            for (nRowPos = 0; nRowPos < idRowSpan; nRowPos++) {
                var idRow = idCell.rows[nRowPos];
                idCellSpan = idRow.cells.length;
                if (idColPos < idCellSpan) {
                    var idAnchorCell = idRow.cells[idColPos];
                    while (true) {
                        if ((idColPos + 1) < idRow.cells.length) {
                            var idMergeCell = idRow.cells[idColPos + 1];
                            if (idMergeCell.parentColumn.index < idColEnd) {
                                idAnchorCell.merge(idMergeCell);
                            } else {
                                break;
                            }
                        } else {
                            break;
                        }
                    }
                }
            }
        }
    }
    alert("処理が終了しました。");
} while (false);

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Mar 19, 2021 Mar 19, 2021

リンクをクリップボードにコピー

コピー完了

戻り橋さん、Ten Aさん、ご対応をありがとうございます。

 

スクリプトですか。。。。

今持ち合わせているわたしのスキルでは、ハードルが高すぎてしまい。。。

 

InDesignを使いこなすには、スクリプトの勉強もしなくてはいけないんでしょうか??

その場合、よろしければ、解りやすい勉強方法や教科書があれば、教えてくださらないでしょうか?

いかがでしょう?

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
参加者 ,
Mar 19, 2021 Mar 19, 2021

リンクをクリップボードにコピー

コピー完了

私が書いたスクリプトを確認する方法を記載します。

今日は、Windows PCしかないので、Windows PCでの手順です。

 

〇前順次

  • 添付ファイルをダウンロードして、拡張子をjsxに変更します。

〇InDesign・[スクリプト]パネル表示

  • [ウィンドウ]↓[ユーティリティ]↓[スクリプト]メニューを選択し、[スクリプト]パネルを表示させます。

〇スクリプト登録

  • [スクリプト]パネル上の[ユーザー]項目を選択し、右クリックします。
    表示されるメニュー[エクスプローラーで表示]を選択し、エクスプローラーを表示させます。
    戻り橋_0-1616220564750.png
  • 表示されたエクスプローラーで、"Scripts Panel"フォルダ以下に、jsxファイルをコピーします。
    戻り橋_1-1616220642784.png

〇スクリプトの実行

  • 表の結合するセルを選択します。
  • [スクリプト]パネル上の[セル結合(行単位).jsx]項目をダブルクリックします。

 

 

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines
エクスプローラー ,
Mar 19, 2021 Mar 19, 2021

リンクをクリップボードにコピー

コピー完了

最新

戻り橋さん!
わぁ! ありがとうございます。
ウィンドウメニュー/ユーティリティ/スクリプト

知りませんでした。
わたしはMac使いなのですが、てっきりターミナルを使うのかしらん?
と思いこんでいました。
まぁ、わたしには難しそうですが、自分なりにがんばって勉強いたします。

これからも、何かのご縁があれば、よろしくご教示いただきたくお願いいたしあす。
改めて、ありがとうございました。

投票

翻訳

翻訳

レポート

レポート
コミュニティガイドライン
他のユーザーへの思いやりを持ち、敬意を払いましょう。コンテンツの出典を明記し、投稿する前に内容が重複していないか検索してください。 さらに詳しく
community guidelines