ご教示よろしくお願い致します。No.04447
halt さん 04/08/18 10:06
 
フォーラムの皆様、こんにちは。徳島の眞鍋というものです。
職場で秀丸を使っていて、どうしてもマクロで処理を行いたいのですが敷居が高くて
作成する事ができずに困っています。
処理というのはホストからPCにエミュレータ経由でDOS形式のファイルをダウン
ロードしてきてPCで解析をしたりする際にデータの並びは固定長形式なのだけど改
行コードがデータ終了直後に付加される場合があってExcelなどにうまく取り込めな
い場合があるのですが改行コードをある一定の文字数の後に付加させることは可能で
しょうか?たとえば仮に_を改行コードとして

aaaaa_
bbbbb_
cccccccccc_



aaaaa            _
bbbbb              _
cccccccccc       _
みたいなイメージです。とにかく改行コードを秀丸上で同じカラムに並ばせたいので
す。
どうか、ご教示よろしくお願い致します。

[ ]
RE:04447 ご教示よろしくお願い致します。No.04448
ENCODINGSHIFTJIS さん 04/08/18 10:36
 
Excel2000 では 開く .txt で
テキスト ファイルウィザード のダイアログが出て
「スペースによって右または左に揃えられた固定長フィールドのデータ」
を選択し、マウスクリックで切れ目指定、次へ 完了。
で末尾改行の位置によらず、列に分けられて取り込みできます。

ファイル開く、でなく アイコン投げ込みとか、拡張子がちがうと
ウィザードが掛からないかもしれません。
--------------------------

手操作で末尾改行位置を揃えるなら、箱型ペースト
1.ファイルの先頭行に最大行長の空白行を作る
2.新規ファイルを開き、データ件数と同じ数+1の改行を作り
それを、BOX選択、コピー する。
3.データファイルの先頭空白行の末尾にペーストする。

すぐ思いつくのは、これくらい。

[ ]
RE:04447 ご教示よろしくお願い致します。No.04449
きいろいまふらあ さん 04/08/18 12:34
 
こんにちは。

>みたいなイメージです。とにかく改行コードを秀丸上で同じカラムに並ばせたいので
>す。

・ファイル全体を処理する
・あらかじめ決められた桁数に合わせる(下の例では半角30文字)
・長さの調整は半角の空白で行う
・ファイル末尾の[EOF]が行の先頭にあったら、その行は処理しない
・タブ文字は半角1文字扱い(秀丸上では処理後の改行位置がずれて見える)

という想定で基本的な処理の部分だけ書いてみました。
(このままで動くはずです。)

//----ここから
##l = 30;                              //※1
gofiletop;
while(1){
    golineend2;
    while(linelen2 < ##l)insert " ";
    if(code == eof)endmacro;
    movetolineno 1, lineno+1;
    if(code == eof)endmacro;           //※2
}
//----ここまで

冒頭の5つの想定に対してコメントをつけておきます。

・ファイル全体を処理する
→例えば選択範囲だけ処理するとか、○行目以降のみ処理するなどといった場合
はそれなりの仕組みが必要になります。

・あらかじめ決められた桁数に合わせる
→上のマクロでは、桁数をマクロの中で指定しています(※1の行)
→上のマクロでは、指定した桁数より長い行は処理しないようにしています
→桁数の指定方法の選択肢としては、上のようにマクロのほかに
 ・都度手入力で指定する
 ・処理対象のテキストの中で一番長い行に合わせる
 といったことが考えられます。

・長さの調整は半角の空白で行う
→他の文字で調整することも全く同様にできますが、意味はないでしょう。

・ファイル末尾の[EOF]が行の先頭にあったら、その行は処理しない
→ファイル末尾の[EOF]が行の先頭にあったら、その行も処理する場合は※2の
行を削除すればよいです。

・タブ文字は半角1文字扱い(秀丸上では処理後の改行位置がずれて見える)
→そもそもデータにタブ文字が含まれることがないのなら考慮不要
→タブを(見かけ上)何文字扱いにするかはソフトウェア依存なので、上記の扱
いとしていますが、例えば「半角○文字扱いにする」という場合には多少ややこ
しい処理が必要です。

また、処理を高速化するには、disabledrawなどを使うとよいでしょう。

[ ]
RE:04449 ご教示よろしくお願い致します。No.04450
halt さん 04/08/18 15:14
 
徳島の眞鍋です。フォーラムの皆様、お疲れ様です。
ENCODINGSHIFTJISさん、きいろいまふらあさん、ご教示どうもありがとうございまし
た。
ENCODINGSHIFTJISさんの「Excel2000 では 開く .txt〜」はテキストを固定長で取り
込みするときに使っていますが、テキストの中にヘッダーのようなものがデータと
データの間に入っていてその部分を行の削除で取り除く作業が発生してしまうんです。
だからとにかく固定長に変換してしまってからExcelのVBでデータ行の取得をしてや
ろうと試みたんです。言葉足らずで申し訳ありませんでした。
ENCODINGSHIFTJISさんの--------------------------以降のオペレーションがよくわ
かりません。秀丸上で行うのでしょうか?もしよろしければ再度ご教示よろしくお願
い致します。
きいろいまふらあさんのマクロありがとうございました。早速使わせて頂いています。
これを元にいろいろ考えてみようと思います。
また、ご教示よろしくお願い致します。

[ ]
RE:04450 ご教示よろしくお願い致します。No.04451
ENCODINGSHIFTJIS さん 04/08/18 16:34
 
CTRL+マウス選択だけでなく、BOX選択開始は、
その他>コマンド一覧>クリップボード系 にも入っています。
その後、カーソルを動かすとわかります。

● 秀丸エディタヘルプ にも説明があります
メニュー>秀丸ヘルプ>クリップボード系コマンド あたり
矩形選択、箱型選択、などとも言われている操作です。
(MS-Word では、縦のブロック  という変な説明)

この場合は、改行列を縦に貼り付けです

[ ]
RE:04451 ありがとうございました。No.04452
halt さん 04/08/19 21:02
 
徳島の眞鍋です。
ENCODINGSHIFTJISさん、勝手な質問に答えていただき、本当にありがとうございまし
た。まだまだ初心者ですが、これからもよろしくお願い致します。

[ ]