|
Iranoan様
お世話になります。
> ここまでできていれば、あと少しですね。
>
>・replaceup
>・HmJre.dll の ReplaceRegular()
>のどちらかを使えばよいと思います。
//------------なんらかの処理------------
loaddll "hmjre.dll";
$s = dllfuncstr( "ReplaceRegular", $s, $subm, 0, $s2 ); // 20yy-mm-ddを期待
//message "20yy-mm-ddを期待" +"\n"+ $s;
freedll;
//------------なんらかの処理------------
大変有意義で貴重なアドバイス、ありがとうございました。
お陰さまで、現在
【TSUTAYA DISCAS】 2009/10/22 返却 の題名のメールに対して
【TSUTAYA DISCAS】 2009-10-22 返却 のように置換できました。
後学のためにお聞きしたいのですが、2009/と2010/の
ような時の指定は一度にはできないのでしょうか?
何か良い方法をご存じでしたらご教示願えますか?
if( leftstr( $subj, 18 ) == "【TSUTAYA DISCAS】"
&& midstr( $subj, 18, 6) == " 2009/" ) {
//&& midstr( $subj, 18, 6) == " 2010/" ) {
//------------試行錯誤中マクロここから------------
//_1.mac
// 題名の日時形式を置換
// yyyy/mm/dd部分だけ → yyyy-mm-dd に置換したい
// yyyy/mm/dd以外は置換後に戻す
//------------------------------------------------------------------
setcompatiblemode 0x0F;
loaddll "TKInfo.dll";
if( !result ) {
message "このマクロは秀丸メールで実行してください。";
endmacro;
}
if( !dllfunc( "IsTuruKameMain" ) ) {
message "このマクロは秀丸メール本体側で実行してください。";
endmacro;
}
disabledraw; //画面書き換え禁止
#count = dllfunc("SelectedMailCount");
if( #count == 0 ) {endmacro;}
#n = dllfunc("LockSelection");
while(1) {
#n = dllfunc("EnumSelection", 1);
if( #n == 0 ){break;}
$subj = dllfuncstr("CurrentHeader", "Subject:"); //【TSUTAYA DISC
AS】 20yy/mm/dd 返却
//message "CurrentHeaderです" +"\n"+ $subj;
if( leftstr( $subj, 18 ) == "【TSUTAYA DISCAS】"
&& midstr( $subj, 18, 6) == " 2009/" ) {
// && midstr( $subj, 18, 6) == " 2010/" ) {
//message "leftstr( $subj, 18 )です" +"\n"+ leftstr( $subj, 18 );
//message "midstr( $subj, 18, 6 )です" +"\n"+ midstr( $subj, 18, 6);
#n = dllfunc("BeginEditMail");
$subj = dllfuncstr("CurrentHeader", "Subject:"); //【TSUTAYA D
ISCAS】 20yy/mm/dd 返却
//message "CurrentHeaderです" +"\n"+ $subj;
$subr = leftstr( $subj, 18 ); //【TSUTAYA DI
SCAS】
//message "$subrです" +"\n"+ leftstr( $subj, 18 );
$subm = midstr( $subj, 18, 12 ); // 20yy/mm/dd
//message "$submです" +"\n"+ midstr( $subj, 18, 12 );
$subl = rightstr( $subj, 4 ); // 返却
//message "$sublです" +"\n"+ rightstr( $subj, 4 );
$s = "([0-9]{4})\\/([ 0-9]{1,2})\\/([ 0-9]{1,2})"; // 20yy/mm/d
dを期待
//message "$sです" +"\n"+ $s;
$s2 = "\\1-\\2-\\3"; // 20yy-mm-d
dを期待
//message "$s2です" +"\n"+ $s2;
//------------なんらかの処理------------
loaddll "hmjre.dll";
if( !result ) message "loaddllに失敗しました。";
$s = dllfuncstr( "ReplaceRegular", $s, $subm, 0, $s2 ); // 20yy-m
m-ddを期待
//message "20yy-mm-ddを期待" +"\n"+ $s;
freedll;
//------------なんらかの処理------------
loaddll "TKInfo.dll";
if( !result ) message "loaddllに失敗しました。";
$subj = $subr + $s + $subl; //【TSUTAYA DISCA
S】 20yy-mm-dd 返却を期待
//message "【TSUTAYA DISCAS】 20yy-mm-dd 返却を期待" +"\n"+ $subj;
#n = dllfunc("SetHeader", "Subject", $subj ); //【TSUTAYA DISCA
S】 20yy-mm-dd 返却を期待
//message "SetHeader" +"\n"+"【TSUTAYA DISCAS】 20yy-mm-dd 返却を期待" +"\n"
+ $subj;
#n = dllfunc("SaveEditMail", 0, 0 );
}
}
#n = dllfunc("UnlockSelection", 1);
enabledraw; //解除
#n = dllfunc("AlterSave"); // 編集中のメールを改変保存
#n = dllfunc("SetMailFlag", "altered", 0); // 改変されたかどうか改変
マークOFF
closereg;
freedll;
endmacro;
//------------試行錯誤中マクロここまで------------
|
|