- ベストアンサー
VBでファイル分割の方法
あるテクストファイルをデータの内容をキーに分割したいのですが、ファイル番号の指定をどう記述すればいいのでしょう? 出力ファイル1個の場合は "FreeFile"を指定して稼動します。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
FreeFileでファイル番号を取得しOpenした後で、再度FreeFileでファイル番号を取得してください。 openしない限りファイル番号が使用されないので、再度同じファイル番号を取得してしまいます。
その他の回答 (6)
間違えました do unti 条件 を do until eof(1) です
補足
回答くださった皆様 ありがとうございます。 出力できました。
正確に書くと ロード open "C:\~\aaa.txt" for input as #1 アウト open "C:\~\aaa1.txt" for output as #2 open "C:\~\aaa2.txt" for output as #3 do unti 条件 input #1,textline Select aaa case 1 Print #1,aaa case 2 print #2,aaa ・ ・ ・ End Selest loop close #1 close #2 close #3 違ってますか? 先に書いたのは入るところはセットで でるところもセットで書きました なんですが
ロード open "C:\~\aaa.txt" for input as #1 input #1,textline アウト open "C:\~\aaa1.txt" for output as #2 print #2,textline open "C:\~\aaa2.txt" for output as #3 print #3,textline close #1 close #2 close #3 をループでまわせばできると思いますが
補足
1つのファイルを分割するのですから、1レコード1処理で行いたいのですが・・・ Line Input #InFile,aaa Select aaa case 1 Print #1,aaa case 2 print #2,aaa ・ ・ ・ End Selest といったかんじで・・・
- wakap
- ベストアンサー率14% (13/89)
1のモノです ファイルオープンする直前でデバックをとめて、 i、jとファイル名の変数の内容を確認されました? 同じになってませんか または、本当にファイルを開いていることはありませんか。どこかで排他で1回オープンしたあとクローズしてない、などなど。 試しに、絶対開いてない!というファイルを適当に作ってオープンしてみるのもいいかもしれません
補足
ファイル名は別になっています。 i , j は同じ内容で 1 になっていました。 なぜ同じ内容になるのでしょう? 回避方法はあるのでしょうか?
- Azzuri
- ベストアンサー率68% (34/50)
分割ということは、複数のテキストファイルを作成するということですよね? であれば、分割先のファイルを作成するときに、異なるテキストファイルをopenする必要があります。 エラーの内容からすると、元のファイルを続けてオープンしようとしているように思えるのですが、どうでしょうか。
補足
とりあえずは別の名前を設定しています。 OutFileName_001 ~ OutFileName_099 といった感じで・・・ ファイル名が長すぎるのでしょうか? ただ実際のファイルは 001 ~ 009 の各フォルダ配下の同じ名前のファイルです。 また FreeFileの代わりに数値を指定すると、エラーは出ませんが、最後のファイルしか出力されませんでした。
- wakap
- ベストアンサー率14% (13/89)
dim i as integer dim j as integer i = freefile j = freefile open xxxx i open xxxx j close i close j 大雑把ですが、上記の様にすれば複数ファイルでも問題ありません
補足
上記のコーディングを試したのですが、 実行時エラー'55'; ファイルは既に開かれています。 と出て デバックを選択すると2つ目のオープンで発生しています。
補足
ありがとうございます。 変わりました。 後の問題点が最終の出力ファイルしかレコードが出力されていないことです。