マクロでヘッダーを割り振る方法

[code]

    a■あああ■いい■ううう■え■おおおお……
    
[/code]

というデータをマクロで

[code]

    aあああ
    aいい
    aううう
    aえ
    aおおおお……
    
[/code]

に変換したいのですが、区切りの「■」の数は不定で、「a」や「あああ」などの長さも不定です。

下記のような形でいちおう得られるのですが、同じ命令を十分な数だけコピペしています。

[code]

    document.selection.Replace("^([^■]+)■([^■]+)(■.+)$","\\1\\2\\n\\1\\3", eeFindReplaceRegExp | eeReplaceAll )
    document.selection.Replace("^([^■]+)■([^■]+)(■.+)$","\\1\\2\\n\\1\\3", eeFindReplaceRegExp | eeReplaceAll )
    document.selection.Replace("^([^■]+)■([^■]+)(■.+)$","\\1\\2\\n\\1\\3", eeFindReplaceRegExp | eeReplaceAll )
    document.selection.Replace("^([^■]+)■([^■]+)(■.+)$","\\1\\2\\n\\1\\3", eeFindReplaceRegExp | eeReplaceAll )
    document.selection.Replace("^([^■]+)■([^■]+)(■.+)$","\\1\\2\\n\\1\\3", eeFindReplaceRegExp | eeReplaceAll )
    document.selection.Replace("^([^■]+)■([^■]+)$","\\1\\2", eeFindReplaceRegExp | eeReplaceAll )
    
[/code]

このような繰り返しを避けるにはどのようにすればよいでしょうか。  
初心者のため、if文などをどのように書けばいいか分かりません。  
よろしくお願いいたします。




次のようにマクロを書いてください。

[code]

    document.selection.StartOfDocument(false);  // 文頭に移動
    document.selection.Find("([^■]+)(?=■)", eeFindNext | eeFindReplaceCase | eeFindReplaceRegExp, 0);
    str = document.selection.Text;  // 最初の文字列 "a" を取得して str に代入
    document.selection.Replace("■", "\\n" + str, eeFindReplaceCase | eeFindReplaceEscSeq | eeReplaceAll, 0);
    document.selection.StartOfDocument(false);  // 以下、最初の行を削除
    document.selection.SelectLine();
    document.selection.Delete(1);
    
[/code]




次のようにマクロを書いてください。

[code]

    document.selection.StartOfDocument(false);  // 文頭に移動
    document.selection.Find("([^■]+)(?=■)", eeFindNext | eeFindReplaceCase | eeFindReplaceRegExp, 0);
    str = document.selection.Text;  // 最初の文字列 "a" を取得して str に代入
    document.selection.Replace("■", "\\n" + str, eeFindReplaceCase | eeFindReplaceEscSeq | eeReplaceAll, 0);
    document.selection.StartOfDocument(false);  // 以下、最初の行を削除
    document.selection.SelectLine();
    document.selection.Delete(1);
    
[/code]

