CSVファイルの分割No.03896
R1hidemaru さん 03/10/22 17:04
 
はじめまして、R1hidemaruと申します。

下記のようなCSVファイルを読んで、ファイル名を付けて
複数ファイルに分割出力する方法はございますでしょうか?
いろいろとマクロ集を探してみたのですが、発見できませんでした。
識者の方、何卒よろしくお願いいたします。

入力するcsvファイル(実際は1500行程度です)

あいうえお.html,AAA
かきくけ.html,BBBB
さしす.html,CCCCC

出力したいファイルのファイル名と内容

ファイル名:  あいうえお.html
内容:        AAA

ファイル名:  かきくけ.html
内容:        BBBB

ファイル名:  さしす.html
内容:        CCCCC 

[ ]
RE:03896 CSVファイルの分割No.03897
山紫水明 さん 03/10/22 21:25
 
 R1hidemaruさん,こんばんは。

》下記のようなCSVファイルを読んで、ファイル名を付けて
》複数ファイルに分割出力する方法はございますでしょうか?
》いろいろとマクロ集を探してみたのですが、発見できませんでした。

 CSVファイルといっても区切り数は一定ではなく,最初の部分をファイル名に
するというのも特定のものに限られるでしょうから,そういうマクロは目的に応
じて作るよりないでしょうね。
 サンプルの限りでは次のようなマクロでいけると思います。
 保存用フォルダ名は適当に書きかえてください。まず少ない行数のファイルで
試してからやってください。

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

//--------------------------------------------//
$folder = "d:\\temp\\temp\\";//保存用フォルダ
#handle0 = hidemaruhandle(0);
gofiletop;
while( code != eof ) {
    #x0 = x;#y0 = y;
    searchdown ",";
    if( !result ) break;
    escape;
    $file = gettext( #x0, #y0, x, y );
    #x1 = x;#y1 = y;
    golineend2;
    $s = gettext( #x1 + 1, #y1, x, y );
    #y2 = y;
    call SaveFile;
    moveto 0, y + 1;
    if( y == #y2 ) break;
    #n = #n + 1;
    title str(#n);
}
message "終わりました。\n" + str(#n) + " 個のファイルを作りました。";
endmacro;

SaveFile:
openfile "/h";
#handle1 = hidemaruhandle(0);
insert $s + "\n";
saveas $folder + $file;
setactivehidemaru #handle0;
closehidemaru #handle1;
return;
//--------------------------------------------//


[ ]
RE:03897 CSVファイルの分割No.03901
R1hidemaru さん 03/10/24 10:16
 
山紫水明様

R1hidemaruでございます。
マクロのサンプルを作成していただきまして
ありがとうございました。
1400件のデータの分割を行ないましたが
全く問題ございませんでした。

>//--------------------------------------------//
>$folder = "d:\\temp\\temp\\";//保存用フォルダ
>#handle0 = hidemaruhandle(0);
>gofiletop;
>while( code != eof ) {
>    #x0 = x;#y0 = y;
>    searchdown ",";
>    if( !result ) break;
>    escape;
>    $file = gettext( #x0, #y0, x, y );
>    #x1 = x;#y1 = y;
>    golineend2;
>    $s = gettext( #x1 + 1, #y1, x, y );
>    #y2 = y;
>    call SaveFile;
>    moveto 0, y + 1;
>    if( y == #y2 ) break;
>    #n = #n + 1;
>    title str(#n);
>}
>message "終わりました。\n" + str(#n) + " 個のファイルを作りました。";
>endmacro;
>
>SaveFile:
>openfile "/h";
>#handle1 = hidemaruhandle(0);
>insert $s + "\n";
>saveas $folder + $file;
>setactivehidemaru #handle0;
>closehidemaru #handle1;
>return;
>//--------------------------------------------//


[ ]