マクロで文字列挿入No.33565
o_hiro さん 14/10/09 14:33
 
とてもとてもレベルの低い質問で申し訳ありません。

マクロを書く際に、「キー操作の開始/終了」から、置換など実際にやりたい動作を
いくつかやり、その後同キーを押したあと「キー操作の保存」でマクロ登録していた
つもりなのですが
今回、すでにある文字列のいくつかの部分に文字を入れるというマクロを書きたく
同じようにやったところ、入れたい位置ではなく文字列の最後に、まとまって入って
しまい苦労しています。

例えば、こういう文字列のそれぞれ入れたい位置に入れるにはどうやってキー操作す
ればよろしいでしょうか?

14473.0km 644.1km 18.94km/L
→総走行距離14473.0km 当日走行距離644.1km 実燃費18.94km/L
元の文字列は毎回回るのですが、入れたい文字と位置はいつも同じです。

[ ]
RE:33565 マクロで文字列挿入No.33566
いいじま さん 14/10/09 14:45
 
いいじまです。

> 例えば、こういう文字列のそれぞれ入れたい位置に入れるにはどうやって
> キー操作すればよろしいでしょうか?
>
> 14473.0km 644.1km 18.94km/L
> →総走行距離14473.0km 当日走行距離644.1km 実燃費18.94km/L
> 元の文字列は毎回回るのですが、入れたい文字と位置はいつも同じです。

「位置は…同じ」とおっしゃいますけど、特に当日走行距離のデータは
2桁や1桁(たとえば95.2kmとか、8.7kmとか)になることもありますよね。
「次の単語」というキー操作をすればできると思いますが、
正規表現置換でも実現できます。

    検索:([0-9\.]+)km[\s ]+([0-9\.]+)km[\s ]+([0-9\.]+)km/L
    置換:総走行距離\1km 当日走行距離\2km 実燃費\3km/L
        「正規表現」にチェック

上記の例題では「14473.0km」のあとに全角スペースが入っていますが、
上記の正規表現では全角でも半角でも、あるいは2つ以上の空白が
あっても半角スペース1つに統一します。
全角1つに統一したければ、上記の「置換」のうち、「\1km」の
あとの半角スペースを全角スペースに換えてください。
全角・半角の区別や空白文字の個数などを残したければもう一ひねり
する必要がありますが、実用上はそこまで要らないんじゃないかと
予想しています。

[ ]
RE:33565 マクロで文字列挿入No.33567
Iranoan さん 14/10/09 14:58
 
 o_hiro さん今日は、Iranoan です。
> 例えば、こういう文字列のそれぞれ入れたい位置に入れるにはどうやってキー操作す
> ればよろしいでしょうか?
>
> 14473.0km 644.1km 18.94km/L
> →総走行距離14473.0km 当日走行距離644.1km 実燃費18.94km/L
 数字の桁数が変わる事があるので、カーソルキーによるキー操作と文字列入
力だけでは、無理だと思います。
 正規表現を用いた置換を使ってはどうでしょう?
 例えば、マクロだと次の様になります。
//------------------------------------------------------------
setcompatiblemode 0x0002000F;
replacedown "([0-9\\.]+km)[  ]([0-9\\.]+km)[  ]([0-9\\.]+km/L)" ,
  "総走行距離\\1 当日走行距離\\2 実燃費\\3" , regular;

[ ]
RE:33565 マクロで文字列挿入No.33569
秀丸担当 さん 14/10/09 15:33
 

例えば下記のような感じで、小数点の有無なども含めて同じようなパターンの行
が連続しているとしたら、キー操作の記録と再生だと簡単でやりやすいと思いま
す。

14473.0km 644.1km 18.94km/L
111.1km 222.2km 33.3km/L
44444.4km 55.5km 6.66km/L

キー操作の記録と再生でやる場合は、まず行頭にカーソルを持っていき、記録を
開始し、記録し、最後には次の行頭に来るようにして、記録を終えるといいと思
います。

1.記録開始
2.文字列入力、Ctrl+右矢印、などを使って目的に合うように編集
3.Homeキー
4.下矢印
5.記録終了

再生するときは、カーソル位置を行頭に持っていってから再生します。

ただし、折り返しなどがある場合は下矢印で次の行に行かないこともあるので、
折り返しが発生していないか注意が必要です。
場合によっては3.4.の操作はEndキーと右矢印のほうがいいかもしれません


行が連続していなくて、テキスト中のいろいろなところに散らばっているとした
ら、置換のほうがいいと思います。

[ ]
RE:33569 マクロで文字列挿入No.33579
o_hiro さん 14/10/10 11:16
 
いいじまさん、Iranoanさん、秀丸担当さん、こんにちは。
ありがとうございます。

御三方に教えていただいた方法を実行しましたところすべてうまく行きました。
スペースの半角/全角については、半角のみを使うことにしました。
桁数に関しては、今のところ変わらないと思うのですが、確定というわけではないで
す。
秀丸担当さんに教えていただいた手順は、マクロが書けない私にとっては助かります。
正規表現と使い分けて勉強させていただきます。

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

[ ]