1. はじめに
- サクラエディタで簡単にマクロを記録して実行したい
- 簡易作業をマクロを使ってまとめて実施したい
2. 開発環境
- サクラエディタ32bit Ver. 2.4.2.6048
- Windows 11
3. マクロの記録・実行
3.1. マクロを記録する
3.1. マクロを実行する
4. よく使うマクロ
4.1. 重複行を削除する
4.1.1. ソースコード
deleteDuplication.mac
//キーボードマクロのファイル
S_SelectAll(0);
S_SortAsc(0);
S_Merge(0);
4.1.2. 実行結果
4.2. 重複行を抽出する
4.2.1. ソースコード
selectDupulication.js
// CheckRepeat.js
main();
function main(){
var sLine1; // 選択範囲ループの1行前を格納
var sLine2; // 選択範囲ループの現在行を格納
var iCnt1 = 0; // 選択範囲ループの行開始位置
var iCnt2 = 0; // 選択範囲ループの行終了位置
var iRet = 0; // 重複行数カウント
// メッセージ表示用
var WSHShell = new ActiveXObject("WScript.Shell");
// 全選択する(Ctrl+A)
SelectAll(0);
// 選択範囲をバッファに格納
var sAll = GetSelectedString(0);
sAll = sAll.replace(/\r\n/g, '\n');
sAll = sAll.replace(/\r/g, '\n');
iStartRowLayout = GetSelectLineFrom();
iEndRowLayout = GetSelectLineTo();
bBoxSelect = (IsTextSelected() == 2);
CancelMode();
// 矩形選択時の動作範囲確認
if (bBoxSelect){
Jump(iStartRowLayout, 0);
iStartRowLogical = ExpandParameter('$y');
Jump(iEndRowLayout, 0);
iEndRowLogical = ExpandParameter('$y');
if ((iEndRowLayout-iStartRowLayout) != (iEndRowLogical-iStartRowLogical)){
WSHShell.Popup("折り返し行を含む矩形選択範囲は,重複確認できません."
, 0, "重複確認", 64);
return false;
}
}
// 選択範囲の先頭に移動
Jump(iStartRowLayout, 0);
BookmarkReset();
// 選択範囲のバッファを改行単位でループ
TraceOut('■"$F"', 1);
SearchNext('$', 0x14);
iCnt2 = sAll.indexOf('\n', iCnt1);
while (iCnt2 != -1) {
sLine2 = sAll.substring(iCnt1, iCnt2);
if (sLine1 == sLine2) { // 前行と同じだった
iRet++;
sRowFm = " ".substr(0, 6 - ExpandParameter("$y").length)
+ ExpandParameter("$y");
TraceOut("・(" + sRowFm + ",1 ): " + GetLineStr(0), 2);
BookmarkSet();
}
sLine1 = sLine2;
iCnt1 = iCnt2 + 1;
iCnt2 = sAll.indexOf('\n', iCnt1);
SearchNext('$', 0x14); // 改行単位で移動(指定行Jumpより速いので)
}
SearchClearMark();
CancelMode();
Jump(iStartRowLayout, 0);
WSHShell.Popup("重複は " + iRet + " 行でした.", 0, "重複削除", 64);
}
4.2.2. 実行結果
- ※単純に連続する行の重複を抽出するため、必要に応じて事前にソート処理を実行しておく必要がある
5. 参考文献