文字列を検索して別の場所に1回以上貼り付No.04174
zuko さん 04/03/07 05:24
 
現在手動で範囲選択して1ファイル名分ずつ置換してるのですが。量が多すぎてマク
ロを書けば自動化できると思い。
例1)のようなCSVファイル名の次の行に内容が書かれた数千行の文字列を
例2)のようにファイル名を削除して、それぞれの行にファイル名を入力
するマクロを書きたいのです。

例1)
-------------------------
000.csv
"1","2","あ",

ABC.csv
"Z","d","e",
"2","4","k",
"い","2","3",

-------------------------

"000.csv","1","2","あ",
"000.csv","い","2","3",

"ABC.csv","Z","d","e",
"ABC.csv","2","4","k",
"ABC.csv","い","2","3",

-------------------------

マクロを作ったことがないので何から初めていいのかさっぱりわかりません…
マクロのヘルプを一通り読んだのですがプログラムを書くような複雑な
ものを書かないといけないようで無理な気がしてき、ここに投稿させてもらいました。


[ ]
RE:04174 文字列を検索して別の場所に1回No.04175
山紫水明 さん 04/03/07 09:02
 
 zukoさん,こんにちは。

》例1)のようなCSVファイル名の次の行に内容が書かれた数千行の文字列を
》例2)のようにファイル名を削除して、それぞれの行にファイル名を入力
》するマクロを書きたいのです。

 正しく理解しているかどうか自信ありませんが,次のようなことでしょうか?

//------------------------------------------//
disabledraw;
gofiletop;
while( 1 ) {
    searchdown2 "^.+csv", regular;
    if( !result ) break;
    $s = gettext( seltopx, seltopy, selendx, selendy );
    deleteline;
    beginsel;
    searchdown2 "^.+csv", regular;
    if( !result ) gofileend;
    replaceallfast "^\\f.+","\""+$s+"\", "+"\\1",regular,inselect;
}
endmacro;
//------------------------------------------//

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

[ ]
RE:04175 文字列を検索して別の場所に1回No.04176
山紫水明 さん 04/03/07 09:37
 
追伸です。
 余分なスペースが入ってしまいますので,11行目を

replaceallfast "^\\f.+","\"" + $s + "\"," + "\\1", regular, inselect;

と修正してください。

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

[ ]
RE:04176 文字列を検索して別の場所に1回No.04177
zuko さん 04/03/07 14:46
 
山紫水明さん
ありがとうございました。
例1)を作成していただいたマクロ実行したところ以下の結果となりました。

"", "1","2","あ",  

""", "1","2","あ",

", "Z","d","e",
""", "1","2","あ",

", "2","4","k",
""", "1","2","あ",

", "い","2","3",

自分の投稿を確認しました。記述に間違いがりました
済みません(^^;

得たい結果は以下となります。
----------------------------------------
"000.csv","1","2","あ",

"ABC.csv","Z","d","e",
"ABC.csv","2","4","k",
"ABC.csv","い","2","3",
----------------------------------------

行いたい処理は以下のようになります。

000.csv  //このファイル名を切り取り
"1","2","あ", //この行の先頭に「"000.csv",」 を追加する

ABC.csv  //このファイル名を切り取り
"Z","d","e",  //この行の先頭に「"ABC.csv",」を追加する。
"2","4","k", //この行の先頭に「"ABC.csv",」を追加する。
"い","2","3", //この行の先頭に「"ABC.csv",」を追加する。

//これらの作業をファイルの最後まで行いたいのです。
//ファイル名の後は1行〜で決まっていません。
実際は名前や住所、電話番号、メールアドレスなどが入ります。
で、次のファイル名。。。と続きます。

すみませんがよろしくお願いします

[ ]
RE:04177 文字列を検索して別の場所に1回No.04178
山紫水明 さん 04/03/07 15:48
 
 zukoさん,こんにちは。

 こちらでは例示されたとおりの結果が得られます。
 秀丸エディタのバージョンはいくつでしょうか?もし古いようでしたら,最新
バージョンに替えてみてください。

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

[ ]
RE:04178 文字列を検索して別の場所に1回No.04179
山紫水明 さん 04/03/07 17:52
 
追伸です。
すみません,「検索での表示」の設定をうっかりしていました。
多分,「点滅表示」にされていたと思います。
次のようにしてください。

//------------------------------------------//
disabledraw;
gofiletop;
while( 1 ) {
    searchdown2 "^.+csv", regular;
    if( !result ) break;
    escapeinselect;
    golinetop;
    #bx = x; #by = y;
    golineend2;
    $s = gettext( #bx, #by, x, y );
    deleteline;
    beginsel;
    searchdown2 "^.+csv", regular;
    if( !result ) gofileend;
    replaceallfast "^\\f.+","\"" + $s + "\"," + "\\1",regular,inselect;
}
endmacro;
//------------------------------------------//

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

[ ]
RE:04179 文字列を検索して別の場所に1回No.04180
zuko さん 04/03/07 22:31
 
ありがとうざいました。
うまくいきました!(^^)/

zuko

[ ]