質問: EmEditorのマクロでできればありがたいのですが、他にも方法がありましたらお願いいたします。 1,文章の論理行ごとに番号を付ける 2,同じ論理行に対して複数の文章を合体させる ●まず、元の文に対して一行ごとに上から順番に番号を付けます 単純化するために短い文で説明しますと、たとえば、以下のような元々の文があるとします。 元の文章 東京に行きます 京都に行きます 大阪に行きます 以下のように空行以外には、番号を上から順番に付けます。例文は短いですが、実際にはもっと論理行が長くて論理行数も数千行になります。 番号は折り返し表示ではなく空行以外の論理行に付けます。目印として行末に■をつけます。 1,東京に行きます■ 2,京都に行きます■ 3,大阪に行きます■ この処理をしたあとに、別の文書で同様に以下のような番号と行末目印をつけて文を合体させて 1,買い物に行きます▼ 2,動物園に行きます▼ 3,テニスをします。▼ 合体させるマクロ処理で仕上がりは、 1,東京に行きます■1,買い物に行きます▼ 2,京都に行きます■2,動物園に行きます▼ 3,大阪に行きます■3,テニスをします。▼ マクロでこういう文章の合体の仕組みを作りたいのです。例文は適当で文に意味はありません。 番号と目印を付ける目的は、それぞれの行を適正にマッチングさせるためです。目印が無いとどことどこを繋げるのかあいまいになるためです。 この方法はどういうやり方がありますでしょうか? よろしくお願いいたします。
回答: 2種類の方法がありますが、最初はどちらも共通です。 1. 結合したいファイル (`ファイル1`) を開きます。 2. `編集` メニューの `垂直選択` コマンド (`Alt`+`E`, `E`) を選択して、すべての行の行頭を複数選択します。 3. `編集` メニューの `高度な操作` の `番号` コマンド (`Alt`+`N`) を選択して、連番を挿入します。 4. カンマを挿入します。 5. 同様にもう1つの結合したいファイル (`ファイル2`) を開いて、同様にカンマを挿入します。 ここまでは同じですが、次の2種類の方法があります。 **箱型選択のコピー、貼り付けで結合する方法** 1. `ファイル2` を選択し、すべてのテキストを選択して (`Ctrl`+`A`)、クリップボードにコピーします (`Ctrl`+`C`)。 2. `ファイル1` を選択し、`編集` メニューの `垂直選択` コマンド (`Alt`+`E`, `E`) を選択して、`Alt`+`End` を押して論理行末を複数選択します。 3. クリップボードから貼り付けします (`Ctrl`+`V`)。 **CSVの結合を利用する方法** 1. `CSV/並べ替え` ツール バーより `カンマ` をクリックして CSV モードにします。(他のフォーマットでも構いません) 同様に、もう1つのファイルも CSV モードにします。 2. `CSV/並べ替え` ツール バーより `CSVの結合` コマンドを選択します。`CSVの結合` ダイアログ ボックスでは、`CSV文書1` と `CSV文書2` にそれぞれ結合したいファイル名を選択します。`条件` には `単純に結合 (キー無し)` を選択します。そして、`今すぐ結合` ボタンをクリックします。 3. 結合された文書が新規作成されるので、必要に応じて、CSVモードを解除し、不要な区切り文字を削除します。 !EmEditor - CSVの結合 **マクロで実行するには、次の方法があります。** `combined.jsee` ``` if( !editor.EnableTab ) { editor.EnableTab = true; } editor.OpenFile( "E:\\Test\\test1.txt", 0, eeOpenAllowNewWindow ); // ファイル1 editor.ExecuteCommandByID(3889); // 垂直選択 document.Numbering("1","1",3,0); document.selection.Text=","; document.selection.EndOfLine(false,eeLineLogical); editor.OpenFile( "E:\\Test\\test2.txt", 0, eeOpenAllowNewWindow ); // ファイル2 editor.ExecuteCommandByID(3889); // 垂直選択 document.Numbering("1","1",3,0); document.selection.Text=","; document.selection.SelectAll(); document.selection.Copy(eeCopyUnicode); document.Saved = true; document.close(); // ファイル2 を閉じると、ファイル1 がアクティブになる document.selection.Paste(eeCopyUnicode); document.Save( "E:\\Test\\Combined.txt" ); // 結合するファイル ```