|
秀まるお様
大変有意義で貴重なアドバイス、ありがとうございました。
【対象】項目によっては一回の置換では不足なので、「数字+円」の桁数に応じて
半角空白を増減させようと思います。以下のマクロで何とか置換できそうです。
//0.mac
disabledraw; //画面書き換え禁止
replaceallfast "(価格)( *)([0-9]+円)", "\\1 \\3", regular;
replaceallfast "^価格 ([0-9][0-9][0-9][0-9][0-9])円","価格 \\1円",regular;
replaceallfast "^価格 ([0-9][0-9][0-9][0-9])円","価格 \\1円",regular;
replaceallfast "^価格 ([0-9][0-9][0-9])円","価格 \\1円",regular;
replaceallfast "^価格 ([0-9][0-9])円","価格 \\1円",regular;
replaceallfast "^価格 ([0-9])円","価格 \\1円",regular;
enabledraw; //解除
endmacro; //マクロを終了
【対象】
価格 91690円
価格 1690円
価格 690円
価格 99円
価格 9円
【置換完了】
価格 91690円
価格 1690円
価格 690円
価格 99円
価格 9円
今、解決できないところは、メール一覧上から整形したいのですが、
BeginEditMail関数を呼んでから、置換は完了するものの
TKINFO.DLL: エディタ上で実行できないTKInfo.dll呼び出しが行われました。
関数コード = 123
とエラー表示が出てしまいます。どこか凡ミスしているのか探せていません。
以下のマクロで直すとしたらどんな感じになりますか?
よろしくお願いいたします。
hum
Windows XP Pro SP3
秀丸メール Ver.5.50β21
秀丸エディタ Ver.8.02β9
//0.mac
setcompatiblemode 0x0F;
loaddll "TKInfo.dll";
if( !result ) {
message "このマクロは秀丸メールで実行してください。";
endmacro;
}
disabledraw; //画面書き換え禁止
#n = dllfunc("BeginEditMail");
replaceallfast "(価格)( *)([0-9]+円)", "\\1 \\3", regular;
replaceallfast "^価格 ([0-9][0-9][0-9][0-9][0-9])円","価格 \\1円",regu
lar;
replaceallfast "^価格 ([0-9][0-9][0-9][0-9])円","価格 \\1円",regular;
replaceallfast "^価格 ([0-9][0-9][0-9])円","価格 \\1円",regular;
replaceallfast "^価格 ([0-9][0-9])円","価格 \\1円",regular;
replaceallfast "^価格 ([0-9])円","価格 \\1円",regular;
#n = dllfunc("SaveEditMail", 0, 0 );
enabledraw; //解除
#n = dllfunc("AlterSave"); //改変保存します
#n = dllfunc("SetMailFlag", "altered", 0); //改変マークはOFF
endmacro; //マクロを終了
> メール本文の修正については、基本的なやり方としては、BeginEditMail関数
>を呼んでから、あとは秀丸エディタ的に書き換えるような形になります。
>
> 秀丸エディタ的に書き換えるというのは、つまり、カーソルを移動して文字入
>力してとか、そういうのを秀丸マクロの命令で書いてって感じになります。
>
> 一般には、今回のような処理は正規表現を使った置換でやるのが楽なんじゃな
>いかと思います。
>
>> 価格_____690円 →価格___690円
>
> 「価格」で始まって空白が何文字かあって「数字+円」があるような物の空白
>を3個固定にしたいということであれば、
>
> 検索: (価格)( *)([0-9]+円)
> 置換: \1 \3
>
> みたいになります。
>
> マクロで書くと、
>
> replaceallfast "(価格)( *)([0-9]+円)", "\\1 \\3", regular;
>
> みたいな1文で置換出来ると思います。
|
|