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);
}
スポンサーリンク