|
太田さん、はじめまして。
杉浦 まさき と申します。
以下のような感じのマクロでとりあえず使用に耐えると思います。
一度試してみて下さい。
#勝手ながら、もしこれでご期待通りの物だったとしても
お礼の方は辞退させて頂きますm(_ _)m。
//----------------------------------------------------------
Input_Folder:
// 保存するフォルダ名の入力
$save_dir = input("データを保存するフォルダを指定して下さい。",directory);
if (!result) endmacro; // [キャンセル]
// (もしあれば)フォルダ名末尾の \ を除去
if (rightstr($save_dir,1) == "\\")
$save_dir = midstr($save_dir,0,strlen($save_dir)-1);
// フォルダが存在するかどうかのチェック
// ※Win95/98 だと正常に動作しないかも??
if (!existfile($save_dir+"\\nul")) {
question "指定されたフォルダが見つかりません。入力をやり直しますか?";
if (!result) endmacro;
goto Input_Folder;
}
// 検索バッファ・オプションの待避&データヘッダの検索を指定
$s_buf = searchbuffer;
#s_opt = searchoption;
setsearch "^◎", 16;
// 元データファイルのウィンドウハンドルを保存
#hwnd_org = hidemaruhandle(0);
// ファイル先頭へ移動&データが先頭から始まっているかどうかチェック
gofiletop;
if (char(code) != "◎") {
// データの先頭へ移動
finddown;
if (!result) {
message "このファイルにはデータがありません。";
goto End;
}
}
// メインループ:データを切り出して適切なファイルヘ保存
#next = 1; // 続行するかどうかのフラグ
#num = 1; // 現在のファイル数
while (#next && #num <= 9999) {
beginsel; // (データ先頭から)範囲指定開始
finddown; // 次のデータの先頭=今のデータの末尾へ移動
if (!result) {
gofileend; // 次のデータがない場合ファイル末尾へ移動
#next = 0; // もうデータはない
}
copy; // データをコピー
escape; // 念のため範囲指定を解除
// ファイル名を作成
$save_file = "file" + rightstr("0000"+str(#num),4) + ".txt";
// 新規ファイルをオープン
newfile;
// 作業状況を見えなくするには newfile の代わりにこちらを使用
// openfile "/h \"" + $save_dir + "\\" + $save_file + "\"";
// 新規ファイルのウィンドウハンドルを取得
#hwnd_data = hidemaruhandle(0);
// コピーしたデータの貼り付け
paste;
// 名前をつけて保存
saveas $save_dir + "\\" + $save_file;
// 上記で openfile .. を使用したらこちらに変える。
// save;
// 元データファイルに移動
setactivehidemaru #hwnd_org;
// 保存したファイルを閉じる
closehidemaruforced #hwnd_data;
// カウンタのインクリメント
#num = #num + 1;
}
End:
// 待避しておいた検索バッファ・オプションを復活
setsearch $s_buf, #s_opt;
// おしまい
endmacro;
//----------------------------------------------------------
|
|