ここから本文です

秀丸マクロに詳しい方ご指導下さい C:\Temp\ 以下に ALL.csv A.csv B.csv...

bas********さん

2016/5/623:32:40

秀丸マクロに詳しい方ご指導下さい

C:\Temp\
以下に

ALL.csv
A.csv
B.csv
C.csv





があります。

ALL.csv の中身は空です。

A.csv の中身を ALL.csv に貼り付け、
その次の行に、B.csv の中身を貼り付け、
その次の行に、C.csv の中身を貼り付け、
・・・・という秀丸マクロを作りたいのですが、
(A.csv、B.csv、C.csv、・・・の中身を、ALL.csv にマージしたいのです)
調べてみたのですが、初めてなので良く分かりません。

この動作を実現する秀丸マクロのコードを教えて頂けないでしょうか。

詳しい方がいらっしゃいましたらご指導の程よろしくお願い致します。

閲覧数:
64
回答数:
1
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

noy********さん

2016/5/1013:35:20

insertfile という、パスで指定したファイルを、現在開いているファイルの
カーソルのある行に読み込む、マクロ文があります。
これを使うのが一番簡単だと思います。以下はサンプルコードです。

$merge_file = "C:\\Temp\\ALL.csv";

$file[0] = "C:\\Temp\\A.csv";
$file[1] = "C:\\Temp\\B.csv";
$file[2] = "C:\\Temp\\C.csv";
#file_num = 3;

newfile; // 新規ファイル作成
disabledraw;

#i = 0;
while( #i < #file_num )
{
ㅤif( existfile( $file[#i] ) == false )
ㅤ{
ㅤㅤmessage "ファイルが存在しません:\n" + $file[#i];
ㅤㅤendmacro;
ㅤ}
ㅤelse
ㅤ{
ㅤㅤinsertfile( $file[#i] );
ㅤㅤgofileend; // ファイル最後へ移動。必要ないはずだが念のため
ㅤㅤif( column ) insert "\n"; // 改行で終わっていない場合は改行する
ㅤ}
ㅤ#i = #i + 1;
}

saveas $merge_file; // 名前を付けてファイルを保存
endmacro;

※知恵袋で字下げするため、Unicodeの空白文字を使っています。
コピペした後は削除してください。

新規ファイルを作り、そこに追加して、ALL.csv という名前で保存する、
という手順ですが、最初に openfile で ALL.csv を開いてもいいです。

ファイル系のマクロは、マクロヘルプの
「通常のコマンドを実行する文」→「ファイル系文」を参照して下さい。
その他の、通常のコマンド文はもちろんですが、関数一覧、
マクロ制御系、メッセージ系、入力系、などは、よく使うものが多いので目を通して下さい。

  • noy********さん

    2016/5/1013:43:30

    すいません。insertfile は関数ではなく、文なので、
    かっこは要りませんでした。

    insertfile $file[#i];

    として下さい。テストした時、かっこ付きでも動きましたが…

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2016/5/12 12:24:35

動作確認できました。たいへん勉強になりました。
noysharlanさん ご指導ありがとうございました。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる