秀丸マクロで検索文字を文末まで置換

このQ&Aのポイント
  • 秀丸エディタのマクロを使って、検索した文字を文末まで置換する方法について教えてください。
  • マクロを実行すると、検索した文字の一行下の行にコピーしたデータを貼り付け、同じ処理を文末まで繰り返すことができます。
  • しかし、検索文字がなくなった時点で処理がストップされず、以降の行全てにコピー&ペーストの処理が繰り返されてしまいます。マクロをどのように組めば解決できるのでしょうか?
回答を見る
  • ベストアンサー

秀丸マクロ =検索文字を文末まで置換=

秀丸エディタのマクロを使って以下の処理を行おうとしました。 1.検索した文字の一行下の行をコピーし、   そのコピーした行末にコピーしたデータを貼り付ける。 2.最初に検索した文字に該当する次の文字の一行下の行をコピーし、   そのコピーした行末にコピーしたデータを貼り付ける。   (繰り返し。) 3.文末(EOF)まで2.の処理を繰り返す。 以下のマクロを作ってみました。 while(code != eof){ setcompatiblemode 15; searchdown "検索文字" , hilight; down 1; copyline; paste; finddown; すると、2.の処理まで正常に実行されるのですが、 検索文字がなくなった時点で2の処理がストップされる事がなく、 それ以降の行のすべてが文末(EOF)まで、コピー&ペーストの処理が 繰り返されます。 例:______________________________________________________ (元の文) ○○ ××× △△ ■■■ ○○ □□□□ ☆☆ (検索する文字) ○○ (マクロ実行後の文) ○○ ××× ××× △△ ■■■ ○○ □□□□ □□□□ ☆☆ ☆☆ ______________________________________________________ 上記の例でいうと、(元の文)の☆☆の部分が、(マクロ実行後の文)で ☆☆ ☆☆ となってしまってます。 この部分を ☆☆ のままにしたいのです。 マクロをどのように組めば実現できるのでしょうか。 よろしくお願いします。

  • hdddvd
  • お礼率43% (209/478)

質問者が選んだベストアンサー

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

以下のようにしてください ---------------------------------------------------- setcompatiblemode 15; //ファイルの先頭へ移動(カーソルがどこにあっても良いようにするため) gofiletop searchdown "検索文字" , hilight; while(1){ if (result == 0) { break;} //行頭へ移動(しないと正しくコピーできない) golinetop; down 1; copyline; paste; finddown; } ------------------------------------ 不明点は、聞いてください。動作確認済みです。

hdddvd
質問者

お礼

助かりました!ありがとうございます!\(^o^)/

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

searchdownの実行のあとの行で、検索対象が見つかったかどうかを チェックすればよいのでは? マクロヘルプから 成功したかしなかったかによって結果コードを返します。結果コードはresultキーワードで参照することができます。  成功した場合は1(TRUE)になり、失敗した場合は0(FALSE)になります。

hdddvd
質問者

お礼

マクロヘルプを見て以下に書き換えてみましたが上手くいきません。 while文を使うのでしょうか。どのような文になるのでしょうか。 searchdown "検索文字/" , hilight; down 1; copyline; paste; finddown; if( result == 0 ) { endmacro; }

hdddvd
質問者

補足

マクロの文の組み方がわかりません。 今回の場合、どのような文になるのでしょうか。 因みに先ほどの文で記載間違いがあったので訂正させていただきます。 finddown;の後の } が入ります。 以上、よろしくお願いします。 

関連するQ&A

  • 秀丸マクロについて質問です。

    秀丸マクロについて質問です。 秀丸で編集されたテキスト文書の中でabcdefgという文字列がある行を検索し、 その行情報を取得し、その行の隣にある文字列(下記の例では123456)を返す にはどのようにすればよいでしょうか? ご回答よろしくお願いします。 (例) 567行目に以下の文があるとします。 abcdefg,123456,goukaku

  • 秀丸マクロ作成のご依頼

    閲覧して頂きありがとうございます。 下記のようなある条件を元に連番を付与するマクロを 秀丸で作成可能でしょうか? 秀丸のバージョンは問いません。 何か不明な点などあれば補足させて頂きますので よろしくお願いいたします。 ■条件 1.行末に「-start」がある行から行頭に連番をつける。   ただし、行末に「-x」がつく場合は連番はつけない。 2.行末に「-end」がある行で連番付与は終了 3.以降同じ処理を繰り返す ■例: ※「_」は半角スペースです。 <元のテキストデータ> ____AAA ____BBB ____CCC-start ____DDD ____EEE-x ____FFF-x ____GGG ____HHH-end ____III ____JJJ ____KKK-start ____LLL-end <変換後のテキストデータ> ____AAA ____BBB 1____CCC-start //連番開始 2____DDD ____EEE-x //除外 ____FFF-x //除外 3____GGG 4____HHH-end //連番終了 ____III 1____JJJ-start //以降繰り返し 2____KKK 3____LLL-end

  • 【秀丸マクロ】IFの使い方

    秀丸マクロでの、IFの使い方が分かりません…。 秀丸でCSVデータの編集をしています。 "文字列1","文字列2","文字列3","文字列4","文字列5", のうち、文字列4だけを見て、条件に合致するものは『行ごと』削除したいんです。 調べて調べて、やっとこ↓までは書いたのですが、 gofiletop; while( code != eof ){ searchdown "^\"((.*?)\",){4}\"(.*?)\"(?\\1)"; deleteline; } IFがないので、これではぜーんぶ消えてしまいます。(苦笑) IFをどういった方法で追加すればよいのか、教えてください。 よろしくお願いします。

  • 秀丸マクロについて

    現在下記のようなマクロを記録し、shift+F2 で複数回実行しています。 ですがテキストの量が多くなってしまい、上から下までHIT数だけ全部 検索して追加コピーできない物かと思っています。どのような構文を 追加すればいいかご教授願えれば幸いです。 あとコピーデータを貼付けた時に全部つながったデータが貼付けられてしまいます。 追加コピーごとに改行が入るようにしたいのですが・・・ よろしくお願い致します。 searchdown "平成.*日" , regular, nocasesense, nohilight; if( ! result ) beep; appendcopy;

  • 秀丸検索、置換について

    こんにちわ、最近秀丸エディタを使用し始めた初心者です。 早速質問ですが、 秀丸で、検索したワードの後ろにコメントを挿入するにはどのようにすれば良いのでしょうか?※検索ファイルはあるディレクトリ以下の複数ファイルが対象です 例)検索ワード:hidemaruとしたとき、 実行前 aaa bbbb ccccc d ee hidemaru fff ggg hh iiiii 実行後 aaa bbbb ccccc d ee hidemaru fff //コメント挿入 ggg hh iiiii という形で、特定の検索ワードの行の一番後ろにコメントを追加することが目的です。 (これを、すべてのファイルに対して実施) 同様の質問がみつからなったため質問させていただきました。 よろしくお願いします。

  • Excel 検索・置換マクロ

    検索する文字列は、AH4のセルにかいている数値とし 置換後の文字列を“無し”にしたいです。 これを実行するマクロを教えてください。 何卒よろしくお願いしますm--m Excel2003

  • 秀丸エディタ・マクロの質問です

    秀丸エディタを使用して、以下のマクロの作成のやり方を教えてください。 元ファイルから必要なデータの抽出・計算を繰り返して下記の例のような形式で表示したいです。 (ここではAAAAA・BBBBB・CCCCC・DDDDD・hijkの表記のある行を抽出し、 「BBBB-AAAAA+1」「DDDDD-CCCCC」の結果をかかった時間1:、かかった時間2:の横に表記する。 これらの作業を10000件以上繰り返す。 ------------------------------------------------ 例)元ファイル 2013/3/6 10:10:10.100 AAAAA 2013/3/6 10:10:10.110 BBBBB 2013/3/6 10:12:12.120 hijk 2013/3/6 10:14:14.140 CCCCC 2013/3/6 10:14:14.150 DDDDD 2013/3/6 10:15:15.130 abcde 2013/3/6 10:15:16.100 AAAAA 2013/3/6 10:15:16.108 hijk 2013/3/6 10:15:16.110 BBBBB 2013/3/6 10:15:18.150 lmn 2013/3/6 10:15:19.140 CCCCC 2013/3/6 10:15:19.150 DDDDD … …(省略:10000行以上) … 2013/3/6 11:18.20.150 DDDDD ------------------------------------------------ 例)ほしい結果 2013/3/6 10:10:10.100 AAAAA 2013/3/6 10:10:10.110 BBBBB 2013/3/6 10:12:12.120 hijk 2013/3/6 10:14:14.140 CCCCC 2013/3/6 10:14:14.150 DDDDD かかった時間1:11msec(2行目-1行目+1) かかった時間2:10msec(5行目‐4行目) 2013/3/6 10:15:16.100 AAAAA 2013/3/6 10:15:16.108 hijk 2013/3/6 10:15:16.110 BBBBB 2013/3/6 10:15:19.140 CCCCC 2013/3/6 10:15:19.150 DDDDD かかった時間1:11msec(9行目-7行目+1) かかった時間2:10msec(12行目‐11行目) … …(省略:10000行以上) … ------------------------------------------------ 現状で以下の2つのマクロを作成しました(元ファイルで実行します) マクロ1.「AA…~DD…」を含む行の抽出+「かかった時間1:、かかった時間2:」の表記をDDDDDの下に挿入するマクロ マクロ2.時間のみの抽出を行うマクロ(下5ケタのみ 例:10100 小数点は削除) これら2つのマクロを同時に動かし、最終的に上記のような形式にまとめる予定です。 (もしかしたら1つのファイルで動かせるのかもしれませんが、わからなかったので二つにわけました;;) 現在、マクロ2.で抽出した時間からどのようにして「BBBB-AAAAA+1」「DDDDD-CCCCC」を 行えばいいか、また、計算した値をどのようにして「かかった時間1:、かかった時間2:」の 横においていけばいいかがわからない状態です。 マクロ自体さわったことがなく、もう一週間悩んでいます。 どなたか馬鹿な私に教えていただけないでしょうか

  • エクセルのマクロで文字の置換について

    エクセルのマクロを使った文字の置換についてお聞きしたことがありましす。 やりたいイメージは例として添付の画像としてアップしましたが、 ・エクセルシートに英数文字列の表がある(例では2行2列ですが、実際は6行48列ぐらいです) ・その表を各英数文字列の間に半角カンマ","を入れて、メモ帳に貼り付けたい   ※実際メモ帳に貼り付ける動作は手動で行うので、クリップボード上で「各英数文字列    の間に半角カンマ","が入っている状態」で構いません。 ・各英数文字列の最初の2文字は必ず"0a"、その後の英数字は3桁または4桁です。 ちなみに、エクセルシートで英数文字列の表をそのままコピーしてメモ帳でペーストすると 各英数文字列の間にスペース(空白)が入ってしまいます。 その後、メモ帳で置換などを使い半角カンマ","を入れてもいいのですが、そこまでをマクロで行いたいと思っております。 上記のことがそもそもエクセルのマクロで出来るかどか分かりませんが、なにか有用な方法がございましたらご教授お願い致します。  ※使用OS:Windows7、エクセルバージョン:2007

  • マクロで検索するには

    エクセルで、何行もデータが入ったリストを作成しています。 あるセルに入れた文字を含む行だけを表示するようなマクロを設定したいです。ちょうど検索窓をつくるようなイメージです。 表示の仕方は、フィルタで「~を含む」をしたような感じにしたいです。

  • エクセルのマクロでの検索

    「編集→「検索」でやるようなことをマクロでやりたいのです。 例えば列Aのデータを検索してそのデータがある行を表示させたいのですが ・同じブック内のシートの同じ列を検索する。 ・検索する文字列を含んでいる候補をマクロボタンを押すごとに表示させていく ということはできるでしょうか。

専門家に質問してみよう