アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBA-読み込んだテキストファイルを並び替えて書き出したい

ch1=FreeFile
Open A for Input as ch1

ch2=FreeFile
Open B for Input as ch2

DO while Not EOF(ch1) Line Input #ch1,buf
Print #ch2,buf
Loop

Close #ch1,#ch2

で読み込み、書き出すことはできました。

やりたいことは、書き出す時に、項目を並べ替えたいのです。


にんじん りんご ねこ
だいこん バナナ いぬ


りんご ねこ にんじん
バナナ いぬ だいこん

よろしくお願いいたします。
区切りはタブです。

A 回答 (2件)

#1です。


例示のコードは、配列内容を完全に入れ替えますので、ご希望の順に調整してください。
forループの部分です。
    • good
    • 8
この回答へのお礼

ありがとうございます。

無事できました!!

並び変えの最後、「範囲がない」といわれ、
んっ?とちょっとあせったのですが、
配列は0からということを思い出しました(;一_一)

本当にありがとうございました。

お礼日時:2010/06/18 19:43

1)文字型配列を2個宣言する


2)文字型配列の個数を格納する変数を2個宣言する
3)Split関数で区切り文字にvbTab or Chr(9)を指定して、読み取った文字列を分解し配列1で受け取る。
4)文字型配列を反転させる(配列1を配列2に)
5)join関数で区切り文字にvbTab or Chr(9)を指定して、反転させた配列を書き出し用文字列に連結する
6)書き出し用文字列を出力する


dim strArray1() as string
dim strArray2() as string
dim nArray1 as long
dim nArray2 as long
dim i as long


DO while Not EOF(ch1)
 Line Input #ch1,buf

 ’バッファをタブで区切って配列1に格納する
 strArray1()=Split(buf, vbTab)
 ’バッファをタブで区切った配列1の件数を取得する
 nArrey1=Ubound(strArray1())

'反転用配列を用意するので同じことを繰り返す
 ’バッファをタブで区切って配列2に格納する
 Array2()=Split(buf, vbTab)
 ’バッファをタブで区切った配列2の件数を取得する
 nArrey2=Ubound(strArray2())

 '配列1を逆転させて配列2に格納する
 for i = 0 to nArrey1
  Array2(i) = Array1(nArray - i)
next i
 ’配列2をタブで連結してバッファに格納する
 buf = join(strArray2(), vbTab)

 Print #ch2,buf
Loop
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!