【サクラエディタ】連番をつけるテクニック
サクラエディタは標準機能では連番挿入ができませんが、ちょっとした工夫で簡単に実現できます。この記事では、手動入力、マクロ、Excel/Googleスプレッドシートを使った方法など、3つの方法を詳しく解説します。
■連番をつける方法
サクラエディタで連番をつける方法はいくつかあります。
手動入力: 簡単な方法ですが、連番の数が多い場合は時間がかかります。
Excel/Googleスプレッドシート: サクラエディタの機能ではない方法ですが、簡単に連番を作成できます。
マクロ: 準備に時間が掛かりますが、動作が早く、サクラエディタだけで処理が完結します。
■手動入力方法
手作業方法1:ひたすら手作業で作業番号をつける
$${\fbox{\bf メリット:}}$$
とにかくシンプルな方法
ナンバリングが20くらいまでなら、なんだかんだ早い。
頑張ってる感じがする。
$${\fbox{\bf デメリット:}}$$
ナンバリングの数が多いとつかれる。
ナンバリングの数が多いと作業に時間がかかる。
泥臭くてダサい。
$${\fbox{\bf 手順:}}$$
ごく一般的な方法なので、手順説明不要と思われますが念のため記載します。
文字の後ろにカーソルを持っていく
番号を入力する
繰り返す
方法2:行番号付きコピーを活用する方法
行番号をあらかじめ用意し、連番を付けたい文字に付ける方法です。
「選択範囲内全行行番号付きコピー」と「矩形選択」を活用します。
$${\fbox{\bf メリット:}}$$
手打ちに比べると、ナンバリングが100以上でも楽になる。
$${\fbox{\bf デメリット:}}$$
手順が多く、やや煩雑
ナンバリングの桁数が多いと対応が難しい。
$${\fbox{\bf 手順:}}$$
1 新規作成などで空テキスト画面を用意する。
2 番号を取得したい行数までEnterキーを押し続けます。
3 「選択範囲内全行行番号付きコピー」で番号をコピーする(例: 1行目から100行目)。
4 コピーした番号を貼り付ける。
5 不要な文字(スペース、:など)を置換で削除します。
*オススメ『置換前:( |:) 正規表現:ON』*
6 不要な文字を除いた数字を矩形選択します。
(Altキーを押しながらドラッグ)
7 連番として使用したい文字列を入力します。
■ExcelやGoogleスプレッドシートを使った方法
サクラエディタは、基本機能では連番をつけることが出来ません。
ExcelやGoogleスプレッドシートで連番を作成し、コピペするかた方が多いと思います。
ご存じの方も多いと思いますが、操作方法をご説明します。
◆Excel/Googleスプレッドシートを使った方法のメリットとデメリット
メリット:
簡単で直感的に操作できる
数式やオートフィル機能を使って複雑な連番も作成できる
デメリット:
サクラエディタと別のソフトを使う必要がある
連番の数が多い場合は、コピペ作業が煩雑になる
◆Excel/Googleスプレッドシートを使った方法のナンバリングの方法
(1)Excelまたはスプシを開く
(2) セルに『文字列+開始番号』を入力する。(例:商品1)
(3) セルの右下をつまみ、ドラッグする。
(4 )結果が問題なければ、セルをコピーして、サクラエディタに貼り付けます。
■マクロを使った方法
マクロを使うと、連番挿入を自動化できます。マクロを作成するための時間が掛かりますが、サクラエディタだけで連番処理が完結します。
◆マクロ使った方法のメリットとデメリット
メリット:
実行結果が早い
連番挿入を自動化できる
デメリット:
マクロの知識が必要
マクロの作成に時間がかかる
ちょっと使うくらいならExcelやスプレッドシートで十分ですが、サクラエディタで完結させたい方はマクロで対応しましょう。
■マクロコード(拡張子 .js)
以下より、連番を作成するマクロを紹介します。
JScriptで記述しております。
◆1 基本:文字列送信(InsText)とループ(for)を使う方法
$${\fbox{\bf 概要:}}$$
ある文字列に番号をつけるマクロです。
$${\fbox{\bf 使い方:}}$$
ソースを編集後、マクロを実行する。
実行すると開始番号から終了番号までの番号が作成されます。
///----------------------------------
// 連番作成マクロ 1 ※拡張子 .js
// 例:お名前1 お名前2 .... お名前100
//
var result = ""; // 結果格納
for (var i = 1; i <= 100; i++) {
result += "お名前" + i + "\r\n";
}
Editor.InsText(result); // 文字列入力
上記のコードを実行すると、変数{setStr}"お名前"に、変数{startNumber}"1"から変数{lastNumber}"100"までの連番を付けてサクラエディタに出力します。
ひとまず連番をつけますが、使うたびにソースコードを変更する必要があり。このままでは汎用性がありません。
◆2 基本:コピペ機能を使う方法
$${\fbox{\bf 概要:}}$$
選択中の文字を、コピー(Ctrl+C)とペースト(Ctrl+V)してく方法です。
普段マクロを使わない方は、こちらのほうがわかりやすいと思います。
$${\fbox{\bf 使い方:}}$$
ソースを直接編集後、マクロを実行する。
///----------------------------------
// 連番作成マクロ 2 ※拡張子 .js
// 例:お名前1 お名前2 .... お名前10
//
// <マクロ実行前に文字を選択しておく>
Editor.Copy; // コピー
for (var i = 1; i <= 10; i++) {
Editor.Paste; // ペースト
Editor.InsText(i); // 文字送信(番号)
Editor.Char(13); // 改行
}
この方法は『コピー → ペースト → 番号入力 → 改行 → ペースト → 番号入力…』という流れを必要数だけ繰り返しています。
この方法も、使用するたびに繰り返し回数を変更する必要があるので、汎用性が低い方法です。
◆3 選択中の文字列+InputBox + 連番(昇順)
$${\fbox{\bf 概要:}}$$
選択中の文字列を取得、インプットボックスで番号を指定できるようにした方法です。
$${\fbox{\bf 使い方:}}$$
文字を選択した後、マクロを実行する。
表示されたインプットボックスに連番の『開始番号-終了番号』入力すれば、連番が作成されます。(例: 1-5 → 1, 2, 3, 4, 5)
※昇順のみで降順には対応しておりません。
/ 連番作成マクロ 3 ※拡張子 .js
// 選択中の文字列に連番を付ける。
// インプットボックスで連番設定。
// 例: 1-3 なら abc1, abc2, abc3
// 1. 選択中の文字列を取得
var selectedText = Editor.GetSelectedString(0);
// 2. 連番の範囲を入力ボックスで取得
var rangeInput = Editor.InputBox("『" + selectedText + "』に連番付与 ※1-5で『1,2,3,4,5』をつける", "1-5", 64);
// 3. 入力された範囲を開始値と終了値に分割
var rangeValues = rangeInput.split("-");
var startNumber = parseInt(rangeValues[0], 10); // 文字を数値に変換
var endNumber = parseInt(rangeValues[1], 10);
// 4. ナンバリング処理
var result = "";
for (var i = startNumber; i <= endNumber; i++) {
result += selectedText + i + "\r\n";
}
// 5. 結果を挿入
Editor.InsText(result);
上記のコードを実行すると、次のような表示と結果が表示されます。
ソースコードを編集せず、連番作成できるようになり、使いやすくなりました。
◆4 選択中の文字+連番+昇順・降順
$${\fbox{\bf 概要:}}$$
選択中の文字列を取得し、開始番号と終了番号をハイフン区切りで入力し、連番を作成するマクロです。
昇順、降順、桁0埋めも対応も可能です。
$${\fbox{\bf 使い方:}}$$
エディタに文字と開始番号-終了番号を入力します。
(例:sample1-1000)連番を作成したい部分を選択し、マクロを実行します。
(例:$${\sf \underbar{sample1-1000}}$$)0で桁を揃えれば、桁揃え(左0埋め)可能です。
(例:sample0001-1000 → sample0001, sample0002, … sample1000)
$${\LARGE \Downarrow}$$
//-----------------------------------
// 連番挿入マクロ (拡張子 .js)
// 文字列 + "連番" *昇順と降順と桁0埋め対応
// 01. 選択中の文字列を取得
var selectedText = Editor.GetSelectedString( 0 ); //選択中の文字取得
// 02. マッチング処理
var match = selectedText.match(/^(.*?)(?:-)?(\d+)(?:-(\d+))?$/); // 正規表現で"xxxxx数字-数字"をマッチング
if( match ) {
// マッチした場合
var prefix = match[1]; //接頭辞
var startText = match[2];
var endText = match[3];
var startNumber = parseInt(startText,10);
var endNumber = parseInt(endText,10);
// 02. 0埋め処理の桁数取得
if ( startText.length == endText.length ) {
// 開始番号ー終了番号の桁数が同じなら、桁0埋め処理する
var digit = startText.length;
} else {
var digit = 0;
}
// 03. ナンバリング処理
var currentNumber = startNumber;
if (startNumber < endNumber) {
// 値が"小-大"の場合
var step = 1; // カウントアップ
} else {
// 値が"大-小"の場合"
var step = -1; // カウントダウン
startNumber = endNumber; // 値の大小入れ替え
endNumber = currentNumber; // 〃
}
var result = "";
while ( startNumber <= currentNumber && currentNumber <= endNumber ) {
var zero = "";
for ( var i = 0;i < digit - currentNumber.toString().length; i++ ) { // 桁0埋め
zero += "0";
}
result += prefix + zero + currentNumber + "\r\n";
currentNumber += step;
}
// 04. 結果をエディタに送信
Editor.InsText(result); // 文字列入力
}
おわりに
今回ご紹介した内容は、サクラエディタのみで連番処理をしたいと思ったときに作成したものです。
コードには改善の余地がある箇所もありますが、皆様の業務効率化に少しでも貢献できれば幸いです。