|
秀まるおさん
ご回答ありがとうございます。
ただ、ご回答いただいた通りにやってみたのですが、
うまくいきません。
マクロ動作終了後、「検索して一覧作成」実行するとやはり
検索ウィンドウの「大文字/小文字の区別」と「正規表現」が、
チェックオフから自動的にチェックオン状態になっています。
長文になってしまってすいませんが、マクロの内容を載せますので、
ご確認をお願いできますでしょうか?
●秀まるおさんから教えてもらったマクロ”a-super.mac”は
内容を変えず、指定されるマクロの名前を”a.mac”に変えています。
●”a.mac”の内容は下記の通りです。
マクロの内容は ”<<InsertNameToHeader>>[lastname]” と
いった変数の場合、TOヘッダの内容をアドレス帳の名前に
して貼り付ける、といったものです。
マクロの使用タイミングは、送信メール作成時(エディタ上)です。
// InsertNameToHeader.mac Rev.20070528 /////////////////////////////////////
////
//
//
// 「To:」ヘッダからアドレス帳を元に、本文へ文字列を自動記入する
//
//
//
// xxxxxxx@yasuhisa.ne
t //
// http://yasuhisa.net
/ //
///////////////////////////////////////////////////// Copyright 2007 Yasuhis
a //
loaddll "TKInfo.dll";
if( !result ) endmacro;
if( ! dllfunc( "IsHidemaruMail" ) ) endmacro;
disabledraw;
///// 座標記憶 /////////////////////////////////////////////////////////////
////
if( selecting == true ){
#x1 = seltopx;
#y1 = seltopy;
#x2 = selendx;
#y2 = selendy;
#select = true;
escape;
} else {
#X = x;
#Y = y;
}
//if ( $Kugiri == "" ) $Kugiri = "\n"; // デフォルトは改行
if ( $Kugiri == "" ) $Kugiri = "、"; // 句読点(、)で区切り
call InsertName("To");
call InsertName("Cc");
///// カーソル位置を元に戻す ///////////////////////////////////////////////
////
if( #select == true ){
moveto #x1, #y1;
beginsel;
moveto #x2, #y2;
endsel;
} else {
moveto #X, #Y;
}
enabledraw;
endmacro;
///// 以下サブルーチン /////////////////////////////////////////////////////
////
InsertName:
if( dllfuncstr("CurrentHeader",$$1) == "" ) return;
$$searchstr = "<<InsertName" + $$1 + "Header>>";
moveto 0, -1; // カーソル位置を本文先頭へ移動
// 書式の検索 //
searchdown $$searchstr + ".+$", regular;
##n = result;
if( ##n == true ){
##format_x1 = foundtopx;
##format_y1 = foundtopy;
##format_x2 = foundendx;
##format_y2 = foundendy;
// 書式の取得 //
$$format = gettext( ##format_x1 + strlen($$searchstr), ##format_y1, ##form
at_x2, ##format_y2 );
if( ##format_x1 != 0 ){
$$format_f = gettext( 0, ##format_y1, ##format_x1, ##format_y2); // 「"<<
InsertName" + $$1 + "Header>>"」 より前の文字列
call ReptStr " ", strlen($$format_f);
$$format_f_sp = $$return;
}
// 書式の削除 //
escape; moveto 0, ##format_y1;
beginsel; moveto ##format_x2, ##format_y2;
delete;
} else return;
##HeaderMax = dllfunc("CountCurrentHeader",$$1);
##HeaderCount = 0;
$$ret = "";
//// ヘッダ分繰り返し ////
while(##HeaderCount < ##HeaderMax) {
$$AddrssList = dllfuncstr("CurrentHeader2",$$1,##HeaderCount);
##ListMax = dllfunc("CountEmailList", $$AddrssList);
if( ##ListMax <= 0 ) return;
##ListCount = 0;
//// アドレス数分繰り返し ////
while(##ListCount < ##ListMax) {
$$Address = dllfuncstr("GetEmailList", $$AddrssList, ##ListCount);
$$Name = dllfuncstr("UnDoubleQuote", dllfuncstr( "FindBook", $$Address));
// 名前(アドレス帳)
if ($$Name == "") {
$$Name = dllfuncstr("UnDoubleQuote", dllfuncstr("SetNameOnly",$$Addres
s)); // 名前(ヘッダより)
$$Note1 = "";
$$Note2 = "";
$$Note3 = "";
$$Note4 = "";
$$Note5 = "";
$$Note6 = "";
$$Note7 = "";
$$Note8 = "";
}else{
$$Note1 = dllfuncstr( "FindBookNote", $$Address); // 備考1
$$Note2 = dllfuncstr( "FindBookNote2", $$Address); // 備考2
$$Note3 = dllfuncstr( "FindBookNote3", $$Address); // 備考3
$$Note4 = dllfuncstr( "FindBookNote4", $$Address); // 備考4
$$Note5 = dllfuncstr( "FindBookNote5", $$Address); // 備考5
$$Note6 = dllfuncstr( "FindBookNote6", $$Address); // 備考6
$$Note7 = dllfuncstr( "FindBookNote7", $$Address); // 備考7
$$Note8 = dllfuncstr( "FindBookNote8", $$Address); // 備考8
}
##FindSpace = strstr($$Name, " ");
if( ##FindSpace > 0 ) {
$$LastName = leftstr($$Name, ##FindSpace); // 名前(名字)
}else{
$$LastName = $$Name;
}
$$Email1 = dllfuncstr("SetEmailOnly",$$Address); // アドレスのみ
$$Email2 = $$Name + " <" + $$Email1 + ">"; // 「名前 <アドレス
>」形式
if($$ret != "") $$ret = $$ret + $Kugiri;
// 書式に従い、置換する //
$$temp = $$format;
call ChangeString $$temp, "[name]", $$Name; $$temp = $$return;
call ChangeString $$temp, "[lastname]", $$LastName; $$temp = $$return;
call ChangeString $$temp, "[note1]", $$Note1; $$temp = $$return;
call ChangeString $$temp, "[note2]", $$Note2; $$temp = $$return;
call ChangeString $$temp, "[note3]", $$Note3; $$temp = $$return;
call ChangeString $$temp, "[note4]", $$Note4; $$temp = $$return;
call ChangeString $$temp, "[note5]", $$Note5; $$temp = $$return;
call ChangeString $$temp, "[note6]", $$Note6; $$temp = $$return;
call ChangeString $$temp, "[note7]", $$Note7; $$temp = $$return;
call ChangeString $$temp, "[note8]", $$Note8; $$temp = $$return;
call ChangeString $$temp, "[email1]", $$Email1; $$temp = $$return;
call ChangeString $$temp, "[email2]", $$Email2; $$temp = $$return;
if( ##HeaderCount == 0 && ##ListCount == 0 ){
$$temp = $$format_f + $$temp;
} else {
if( $Kugiri == "\n" || rightstr($$ret, strlen($Kugiri)) != $Kugiri ){
$$temp = $$format_f_sp + $$temp;
}
}
$$ret = $$ret + $$temp;
##ListCount = ##ListCount + 1;
}
##HeaderCount = ##HeaderCount + 1;
}
moveto ##format_x1, ##format_y1; // 書式が記入されていた行から文字列
を書き入れる
insertfix $$ret;
return;
// 文字列の置換 //
ChangeString:
// $$1 指定文字列
// $$2 検索文字列
// $$3 置換文字列
##n = strstr( $$1, $$2 );
if( ##n != -1 ){
$$ret_left = leftstr( $$1, ##n );
$$ret_mid = $$3;
$$ret_right = rightstr( $$1, strlen( $$1 ) - strlen( $$ret_left ) - strlen
( $$2 ) );
$$ret = $$ret_left + $$ret_mid + $$ret_right;
} else {
$$ret = $$1;
}
return $$ret;
// 繰り返し回数分の文字列を返す //
ReptStr:
// $$1 文字列
// ##2 繰り返し回数
$$ret = "";
##loop = 0;
while ( ##loop < ##2 ){
$$ret = $$ret + $$1; // 先頭文字数分の空白
##loop = ##loop + 1;
}
return $$ret;
---以下の内容はコミュニテックス会議室システムにより付加されました。
本文中のメールアドレスは伏せ字に変換されました。伏せ字にしたくない場合
はメールアドレスを""で囲んで書き込んでください。
|
|