質問: お世話になっております。 この画像の最後の行まで再変換を繰り返すという方法です。 記述は一回で、あとは最後の行まで繰り返しと言う記述だと思います。 できれば、もとのひらがなは、●■マークで囲みをいれて変換後も前に残るようにしたいです 変換後は、 ●おきなわ■沖縄 ●かごしま■鹿児島 よろしくお願いいたします。 ![画像の説明をここに入力](https://i.stack.imgur.com/qqOtw.png)
回答: **2021/4/2 更新** - **EmEditor v20.6.905**以上では、`SendKeys` メソッドが改善されました。次のマクロを一度だけ実行してください。 **Reconvert.jsee** ``` document.selection.Replace("^.+?$","●\\0■\\0",eeFindReplaceCase | eeReplaceAll | eeFindReplaceRegExp,0); document.selection.StartOfDocument(false); while( document.selection.Find("(?<=■).+?$",eeFindNext | eeFindReplaceCase | eeFindReplaceRegExp,0) ) { editor.ExecuteCommandByID(4199); // 再変換 shell.SendKeys( "~" ); } ``` **EmEditor v20.6.904以前の場合** ~~残念ながら、`SendKeys` メソッドは、マクロの途中で、現在実行中の EmEditor ウィンドウ自身あてには使用することができません。使用しようとすると、最後にまとめて実行されてしまいます。~~ そこで、妥協案として、次の2つのマクロを使用されてはいかがでしょうか? 最初のマクロ `Reconvert1.jsee` では、まず `おきなわ` を `●おきなわ■おきなわ` というように、各行を `●` `■` で囲みをいれてコピーします。 2つめのマクロ `Reconvert2.jsee` では、カーソル位置の次の `■` の後の文字列を再変換して最初の候補で確定します。このマクロを行数分だけ繰り返して実行してください。 **Reconvert1.jsee** ``` document.selection.Replace("^.+?$","●\\0■\\0",eeFindReplaceCase | eeReplaceAll | eeFindReplaceRegExp,0); document.selection.StartOfDocument(false); ``` **Reconvert2.jsee** ``` document.selection.Find("(?<=■).+?$",eeFindNext | eeFindReplaceCase | eeFindReplaceRegExp,0); editor.ExecuteCommandByID(4199); // 再変換 shell.SendKeys( "~" ); ``` **Recovert1.jsee 実行後のサンプル** ``` ●おきなわ■おきなわ ●かごしま■かごしま ●みやざき■みやざき ●くまもと■くまもと ●ふくおか■ふくおか ●おおいた■おおいた ●さが■さが ``` **Recovert2.jsee を7回実行後のサンプル** ``` ●おきなわ■沖縄 ●かごしま■鹿児島 ●みやざき■宮崎 ●くまもと■熊本 ●ふくおか■福岡 ●おおいた■大分 ●さが■差が ```