|
ogさん,こんにちは。
あのときは ho さんでしたね。
》このマクロで、「範囲を指定して」(矩形指定含む)
》文字置換ができないでしょうか?
以下のマクロで試してください。1カ所だけ修正というわけにもいきませんので
長いですが,全文アップします。
では, (^^)/~
山紫水明
//--------- 文字変換.Mac -----------------------------------//
// 全角半角大小変換
// 2000.7.22 Ver.1
// 2000.7.24 Ver.2
// 2001.6.23 Ver.3
call Save_search;
disabledraw;
if(!selecting){
disableinvert;
question "全文で変換しますか?";
if(!result) endmacro;
else selectall;
}
#bx=seltopx; #by=seltopy;
#ex=selendx; #ey=selendy;
Mojimenu:
menu "文 字 の 変 換",
"A) 英字大文字に",
"B) 英字小文字に",
" 《全角に変換》",
"C) 英 数 字",
"D) 英 字",
"E) 数 字",
"F) カタカナ",
" 《半角に変換》",
"G) 英 数 字",
"H) 英 字",
"I ) 数 字",
"J) カタカナ";
#r = result;
if( rectselecting ) { //BOX 範囲選択の場合
#rectsel = 1;
#handle1 = hidemaruhandle(0);
cut;
openfile "/h";
#handle2 = hidemaruhandle(0);
pasterect;
gofileend;
insertreturn;
selectall;
#bx=seltopx; #by=seltopy;
#ex=selendx; #ey=selendy;
}
if(#r > 3) {escape; moveto #ex, #ey;}
if(#r == 0) endmacro;
else if(#r == 1 ||#r == 4 || #r == 9) goto Mojimenu;
else if(#r == 2) toupper;
else if(#r == 3) tolower;
else if(#r == 5){$replace = "[A-Za-z0-9]+"; call ToZenkaku;}
else if(#r == 6){$replace = "[A-Za-z]+"; call ToZenkaku;}
else if(#r == 7){$replace = "[0-9]+"; call ToZenkaku;}
else if(#r == 8){$replace = "[ヲ-ン]+"; call ToZenkaku;}
else if(#r == 10){$replace = "[A-Za-z0-9]+"; call ToHankaku;}
else if(#r == 11){$replace = "[A-Za-z]+"; call ToHankaku;}
else if(#r == 12){$replace = "[0-9]+"; call ToHankaku;}
else if(#r == 13){$replace = "[ァ-ヶ]+"; call ToHankaku;}
if( #rectsel ) {
while( 1 ) {
if(#ex < linelen) #ex = linelen;
down;
if( !result ) break;
}
gofiletop;
beginrect;
moveto #ex, #ey-1;
cut;
setactivehidemaru #handle1;
pasterect;
closehidemaruforced #handle2;
}
escape;
redraw;
call Reset_search;
endmacro;
ToZenkaku:
while(1){
searchup $replace, regular;//
if(result == 0 || y < #by || (y == #by && x < #bx)) break;
tozenkakukata;
escape;
}
return;
ToHankaku:
while(1){
searchup $replace, regular;//
if(result == 0 || y < #by || (y == #by && x < #bx)) break;
tohankaku;
escape;
}
return;
Save_search: //検索状態を保存・変更
if (!searchmode) { // 検索状態を範囲選択に変更
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "SelectFound",1;
#modechange = 1;
envchanged;
closereg;
}
return;
Reset_search: //検索状態を元に戻す
if (#modechange) {
openreg "CURRENTUSER", "Software\\Hidemaruo\\Hidemaru\\Env";
writeregnum "SelectFound",#s_mode;
envchanged;
closereg;
}
return;
//----------------------------------------------------------------//
|
|