文字置換マクロNo.09125
og さん 01/06/23 10:34
 
いつもお世話になっています。
山紫水明さんに作って頂きましたマクロ『文字置換』
(hidesoft.2:06226)を大事に使わせて頂いております。

高望みで申し訳ないのですが、ヒントを頂きたく思います。
このマクロで、「範囲を指定して」(矩形指定含む)
文字置換ができないでしょうか?

[ ]
RE:09125 文字置換マクロNo.09127
山紫水明 さん 01/06/23 18:20
 
 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;
//----------------------------------------------------------------//


[ ]
RE:09127 文字置換マクロNo.09128
og さん 01/06/23 20:49
 
山紫水明さん、ありがとうございます。

> ogさん,こんにちは。
> あのときは ho さんでしたね。

いつもお世話になっています。
やっぱりhoでしたか。メールアドレスの入れ替えとか
した時に自分でも忘れていて、再登録も何度かやりました。

> 以下のマクロで試してください。1カ所だけ修正というわけにもいきませんので
>長いですが,全文アップします。

わざわざ書いて下さいましてありがとうございます。
いつも感謝しております。
これで範囲を指定して置換する事ができました。
前のものとの違いも勉強の為に確かめておきたいので、
両方をプリントアウトして比べてみたいと思います。

ありがとうございました。

[ ]