• 締切済み

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

秀丸エディタを使用して、以下のマクロの作成のやり方を教えてください。 元ファイルから必要なデータの抽出・計算を繰り返して下記の例のような形式で表示したいです。 (ここでは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:」の 横においていけばいいかがわからない状態です。 マクロ自体さわったことがなく、もう一週間悩んでいます。 どなたか馬鹿な私に教えていただけないでしょうか

みんなの回答

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

なんか面倒そうな処理ですねぇ……。 詳細がわからないので、私だったら…という方法で。 1)gofiletopで先頭に移動させておく。 2)searchdownで"AAAAA"を検索する。 3)golineendで行末に移動し、beginselで選択開始し、golinetopで行頭まで移動。 4)searchdownで"."をinselectで検索して最初に見つかる少数点の位置に移動。 5)選択状態を解除してrightで右に1つ移動して、xの値を変数に格納。 6)rightで3つ右に移動。 7)gettext()関数でx1を5)で格納した値を指定。y1とy2はそのままyをx2はxを指定して文字列を取り込み。 8)val()関数で数値化。 9)searchdownで"BBBB"を検索する。 10)3)~8)までの方法でBBBBのミリ秒を取得。 11)必要な演算を行う。 12)"かかった時間1:"を挿入する場所までカーソル移動してinsertで挿入。 13)str()関数で11)で演算したミリ秒を文字列化してinsertで挿入。 14)"msec"をinsertで挿入してinsertreturnで改行も挿入。 15)2)に戻る。(2)の結果、searchdown後のresultが失敗を返した場合は最後まで検索したものとして処理終了) "かかった時間2:"も同様な方法で処理…ですかねぇ。 12)~14)のinsertは1つにまとめてしまってもよいかもしれませんが。 関係ないけど、秀丸はフリーソフトとは少し違うような。 # シェアウェアです。フリーというのはどうかと…。

関連するQ&A