フォーラムの返信を作成しました。

1 件の投稿を表示中 (合計 1 個)
  • 作成者
    投稿
  • 返信先: 表作成マクロ #10022
    1da2
    メンバー

    SNOWさんが効率化をしてくださいました。
    ありがとうございます。

    var lines = document.selection.Text.replace(/(rn|r)/g, “n”).split(“n”);
    var l_num = lines.length; //行数
    var c_num = 0; //列数
    var cc_num = []; //各列の最大バイト数

    for (var i = 0; i c_num) {
    c_num = ln.length;
    }

    //各列の最大文字数を計算
    for(var j = 0, n = ln.length; j (cc_num[j] || 0)) {
    cc_num[j] = cell_bytenum;
    }
    }
    }

    var l_op = prompt( “線種を選んで下さい(1:普通 2:外枠だけ太く 3:太く)”, “1” ) – 0;

    switch (l_op) {
    case 3 : var c = “┏━┳┓┃┃┣━╋┫┗┻┛”.split(“”); break; //太く
    case 2 : var c = “┏━┯┓┃│┠─┼┨┗┷┛”.split(“”); break; //外枠だけ太く
    default: var c = “┌─┬┐││├─┼┤└┴┘”.split(“”); break; //普通
    }

    //先頭行、区切り行、終端行の作成
    var p_str = c[0];
    var MatrMid = c[6];
    var MatrEnd = c[10];

    for (var i = 0, n = cc_num.length; i < n; i++) {
    for (var j = 0, m = cc_num / 2; j < m; j++) {
    p_str += c[1];
    MatrMid += c[7];
    MatrEnd += c[1];
    }
    if (i != cc_num.length -1) {
    p_str += c[2];
    MatrMid += c[8];
    MatrEnd += c[11];
    } else {
    p_str += c[3];
    MatrMid += c[9];
    MatrEnd += c[12];
    }
    }

    //終端行以外は、改行を追加
    p_str += "rn";
    MatrMid += "rn";

    //データ行の作成
    for (i in lines) {
    var ln = lines
    ;
    var MatrInt = c[4];
    for (var j = 0; j < c_num; j++) {
    MatrInt += ln[j] || "";
    for (var k = 0, n = cc_num[j] – lenB(ln[j]); k < n; k++) {
    MatrInt += " ";
    }
    MatrInt += c[(j != c_num – 1) ? 5 : 4];
    }
    p_str += MatrInt + "rn";

    //最後の行以外は区切り行を追加
    p_str += (i != lines.length -1) ? MatrMid : MatrEnd;
    }

    document.selection.Text = p_str; //出力

    /***** function *****/
    function lenB(str) { //文字のバイト長を返す
    if (!str) {
    return 0; //未定義用処理
    }

    var result = 0;
    for (var i = 0, n = str.length; i = 256) ? 2 : 1;
    }
    return result;
    }

1 件の投稿を表示中 (合計 1 個)