CSV/TSVでアクティブ列選択

提供: MeryWiki
2024年12月27日 (金) 09:24時点におけるYuko (トーク | 投稿記録)による版 (Yuko がページ「CSVでアクティブ列選択」を「CSV/TSVでアクティブ列選択」に移動しました)
ナビゲーションに移動 検索に移動

概要

このマクロは、CSVファイル内でアクティブな列を選択するためのものです。現在のカーソル位置を基準に、対応する列を自動的に全て選択します。

注意事項

  • Mery Ver 3.7.9 で動作確認しています。

使い方

1. MeryでCSVファイルを開く。 2. 選択したい列にカーソルを移動させる。 3. このマクロを実行すると、カーソル位置に対応する列が全て選択される。

ソースコード

#title = "CSVでアクティブ列選択"

var doc = document;
var sel = doc.selection;

main();

function main() {
    // 現在の列位置を取得
    var actX = sel.GetActivePointX(mePosLogical);
    var actY = sel.GetActivePointY(mePosLogical);
    var line = doc.GetLine(actY);
    var lineArray = line.split("");
    var leftString = lineArray.slice(0, actX - 1).join("");
    // フィールド数を計上
    // ダブルクォート囲みも考慮する
    var fieldCount = 0;
    var inDoubleQuote = false;
    for (var i = 0; i < leftString.length; i++) {
        if (leftString[i] == '"') {
            inDoubleQuote = !inDoubleQuote;
        }
        if (!inDoubleQuote && leftString[i] == ',') {
            fieldCount++;
        }
    }
    // アクティブ列を選択
    var pattern = "";
    if (fieldCount == 0) {
        pattern = '^([^,]*|"[^",]*")';
    } else {
        pattern = '(?<=^([^,]*,|"[^",]*",){' + fieldCount + '})([^,]*|"[^",]*")';
    }
    sel.Find(pattern, meFindReplaceRegExp + meFindAll + meFindKeepOptions);
}
スポンサーリンク