プロが教えるわが家の防犯対策術!

秀丸エディタを使用して、以下のマクロの作成のやり方を教えてください。

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

A 回答 (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つにまとめてしまってもよいかもしれませんが。


関係ないけど、秀丸はフリーソフトとは少し違うような。
# シェアウェアです。フリーというのはどうかと…。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!