- ベストアンサー
VBA-読み込んだテキストファイルを並び替えて書き出す方法
- VBAを使用してテキストファイルを読み込み、項目を並び替えて書き出す方法を教えてください。
- 具体的には、読み込んだテキストファイルの各行に含まれる項目をタブ区切りで分割し、それぞれの項目を並び替えてから書き出す方法を知りたいです。
- 例えば、読み込んだテキストファイルの行には「にんじん」「りんご」「ねこ」が含まれており、それらの項目を「りんご」「ねこ」「にんじん」という順番で書き出したいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 例示のコードは、配列内容を完全に入れ替えますので、ご希望の順に調整してください。 forループの部分です。
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
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
お礼
ありがとうございます。 無事できました!! 並び変えの最後、「範囲がない」といわれ、 んっ?とちょっとあせったのですが、 配列は0からということを思い出しました(;一_一) 本当にありがとうございました。