選択範囲内のみの置き換えマクロNo.14532
jiner さん 03/04/24 16:14
 
こんにちは。

早速ですが、以下のような行の場合どうすればよいのでしょうか?
数百行ある中の、選択範囲もしくは行番号をマウスでドラッグした場合の
選択行のみの置換。
ツールバーにマクロを設定し一発で置換したいです。

'_'  -> 半角スペース
'□' -> tab

[置換前]
__abc_□_def__□ghij_klm_□_□__ を、

[置換後]
abc_def_ghij_klm に。

1. tab の削除
2. 連続する半角スペースを1つに
3. 行頭行末のホワイトスペース削除
◎ 任意選択範囲内のみ置換

また、贅沢ですみませんが上記のような動作で、クリップボード内の文字列
をマクロ実行で置換後に貼付けるようなことができればと思っております。
エクセルからデータを複数セルで選択しコピーするときにも便利かと。

自分では、
[マクロ] - [キー操作の保存] で、
"置換" - {選択した範囲内のみ} をチェックし保存しているのですが、
次回、任意で文字列選択後に[マクロの実行]を開始しても全文が置換対象に
なってしまい思うように進めません。

全角半角変換には、山紫水明様の"全角半角大小文字変換マクロ"を使用させていた
だいており、本マクロに、もっさい自作文を追加し試してみましたが、やはり全文が
置き換わってしまいます。


よろしければアドバイスいただけませんか。
宜しくお願い致します。

[ ]
RE:14532 選択範囲内のみの置き換えマクロNo.14533
秀丸担当 さん 03/04/24 18:46
 
>自分では、
>[マクロ] - [キー操作の保存] で、
>"置換" - {選択した範囲内のみ} をチェックし保存しているのですが、
>次回、任意で文字列選択後に[マクロの実行]を開始しても全文が置換対象に
>なってしまい思うように進めません。

やってみたところ、キー操作の保存では、「選択した範囲内のみ」の状態
が記録されませんでした。どうも不具合のようです。

[マクロ]→[キー操作の保存]でマクロをファイルに保存し、以下のように
書き換えると「選択した範囲内のみ」の状態にすることができます。
(replaceallまたはreplacedownなどの行)

replaceall "\\t" , "" , regular;
 ↓
replaceall "\\t" , "" , regular, inselect;

書き換えたら、[マクロ]→[マクロ実行]よりマクロが実行できます。
または、[マクロ]→[キー操作の読込み]して読み込むことで、
キー操作の記録に戻して実行することもできます。

[ ]
RE:14532 選択範囲内のみの置き換えマクロNo.14534
山紫水明 さん 03/04/24 20:32
 
jinerさん,こんばんは。

》[置換前]
》__abc_□_def__□ghij_klm_□_□__ を、

》[置換後]
》abc_def_ghij_klm に。

次のマクロで試してください。
//---------------------------------------------------//
disabledraw;//なくてもよい
#by = seltopy;
#ey = selendy;
replaceallfast "[ \t]+", " ", regular, inselect;
call Re_select #by, #ey;
replaceallfast "^[ ]+", "", regular, inselect;//行頭空白の削除
endmacro;

Re_select://選択範囲の再設定
  moveto 0, ##1;
  beginsel;
  moveto 0, ##2;
  return;
//---------------------------------------------------//

》◎ 任意選択範囲内のみ置換

》また、贅沢ですみませんが上記のような動作で、クリップボード内の文字列
》をマクロ実行で置換後に貼付けるようなことができればと思っております。

 直接クリップボード内の文字列を置換するのは難しいので,いったん貼り
付けてから,置換するという方法でいけませんか?

》全角半角変換には、山紫水明様の"全角半角大小文字変換マクロ"を使用させ
》ていただいており、本マクロに、もっさい自作文を追加し試してみました
》が、やはり全文が置き換わってしまいます。

 いったん置換すると選択範囲は解除されますので,再度範囲を選択する必要
があります。上記マクロを参考にしてください。
 置換の結果,行数が変わるような場合には,上記のままでは使えませんが。

     では, (^^)/~
                                        山紫水明

[ ]
RE:14532 うまくできましたNo.14535
jiner さん 03/04/25 05:16
 
おはようございます。

秀丸担当さん、不具合との返答有り難うございました。
自分のマクロ保存の方法が間違っているのかと心配でした。
直接書き換えでできました。

山紫水明さん、アドバイス有り難うございました。
要となる"選択範囲の再設定"を教えていただいたことで
何かと便利です。

自分好みのスクリプトが書けました。
(と、大げさに言うほどのものではございませんが)


この度は有り難うございました。
今後とも宜しくお願い致します。

[ ]
RE:14532 鶴亀メール使用時での動作No.14538
jiner さん 03/04/25 09:59
 
こんにちは。
度々すみません。

早速ですが、今回の件に関しまして秀丸エディタでは問題なく
OKでしたが、鶴亀の方ですと思うようにできません。

山紫水明さんにご提供いただきましたマクロに、別マクロ文
(全角半角大小文字変換マクロ)の一部を追加し下記のように
使用しております。
秀丸だと快適です。
鶴亀で選択範囲しなかった場合に、当然ですがヘッダまで選択
範囲に含まれ、結局ヘッダがボロボロになってしまいます。

ですので現状では、5行目を
question "全文で変換しますか?\n\n鶴亀メーラーの場合、変換範囲を\n指定しなけ
れば、ヘッダが壊れます!";
として使用しております。

また、7行目を適当に
else select=body;
else replaceall;
else replacebody;
else target=body selectall;
等と変更しながら試していますが上手くいきません。
全くの初心者です。


//---------------------------------------------------//
01. disabledraw;//なくてもよい
02.
03. if( !selecting ) {
04.     disableinvert;
05.     question "全文で変換しますか?";
06.     if( !result ) endmacro;
07.     else selectall;
08. }
09.
10. #by = seltopy;
11. #ey = selendy;
12. replaceallfast "[ \t]+", " ", regular, inselect;
13. call Re_select #by, #ey;
14. replaceallfast "^[ ]+", "", regular, inselect;//行頭空白の削除
15. endmacro;
16.
17. Re_select://選択範囲の再設定
18.   moveto 0, ##1;
19.   beginsel;
20.   moveto 0, ##2;
21.   return;
//---------------------------------------------------//


◎自動的に、"秀丸エディタ", "鶴亀エディタ(?)"のどちらがマクロ呼び出しているのか
  を判断したうえでのマクロ制御はどのようにすればいいのでしょうか?
  できればマクロファイルを複数作るのではなく、if文か何かで1ファイルに収めた
いです。
  また、(全角半角大小文字変換マクロ)も頻繁に使用させていただいておりますので、
  そちらも全文変換時は、鶴亀エディタの"本文のみ"を対象にさせたいと思っており
ます。


鶴亀マクロヘルプの
"秀丸エディタと鶴亀メールのマクロ動作の違い"等を
見ていたのですが自分にはわかりませんでした。

以上、勝手ばかりですみませんが宜しくお願いします。

[ ]
RE:14538 鶴亀メール使用時での動作No.14539
たけのこ さん 03/04/25 10:14
 
たけのこです。

7行目は
else{gofiletop;beginsel;gofileend;copy;}
で、どうでしょう?検証していませんが。

秀丸と鶴亀の自動判定ですが、ヘルプの先頭だけ見て(おいおい)
/////
gofiletop;
up;
if(result){
        message "鶴亀です";
}else{
        message "秀丸です";
}
/////
とか。秀丸ではgofiletopから上には行けませんが、鶴亀ではヘッダエリアに行
けますので。

(^^)/”

[ ]
RE:14539 鶴亀メール使用時での動作No.14540
たけのこ さん 03/04/25 10:38
 
たけのこです。

> 秀丸と鶴亀の自動判定ですが、ヘルプの先頭だけ見て(おいおい)

とかって、よく見たらIsTurukameなる関数がありますね、失敬!

(^^)/”

[ ]
RE:14539 鶴亀メール使用時での動作No.14542
jiner さん 03/04/25 13:39
 
たけのこさん、こんにちは。

>7行目は
>else{gofiletop;beginsel;gofileend;copy;}
>で、どうでしょう?検証していませんが。

うまくいき、助かりました。
有り難うございました。

今後とも宜しくお願いします。

[ ]