こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBでファイル分割の方法

あるテクストファイルをデータの内容をキーに分割したいのですが、ファイル番号の指定をどう記述すればいいのでしょう?
出力ファイル1個の場合は "FreeFile"を指定して稼動します。

投稿日時 - 2004-12-03 09:35:54

QNo.1110452

困ってます

質問者が選んだベストアンサー

FreeFileでファイル番号を取得しOpenした後で、再度FreeFileでファイル番号を取得してください。
openしない限りファイル番号が使用されないので、再度同じファイル番号を取得してしまいます。

投稿日時 - 2004-12-03 11:18:42

補足

ありがとうございます。
変わりました。

後の問題点が最終の出力ファイルしかレコードが出力されていないことです。

投稿日時 - 2004-12-03 17:41:54

ANo.4

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.7

間違えました

do unti 条件



do until eof(1)

です

投稿日時 - 2004-12-03 18:04:35

補足

回答くださった皆様
ありがとうございます。
出力できました。

投稿日時 - 2004-12-03 18:09:42

ANo.6

正確に書くと

ロード
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

違ってますか?
先に書いたのは入るところはセットで
でるところもセットで書きました

なんですが

投稿日時 - 2004-12-03 18:03:38

ANo.5

ロード
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

をループでまわせばできると思いますが

投稿日時 - 2004-12-03 11:20:17

補足

1つのファイルを分割するのですから、1レコード1処理で行いたいのですが・・・

Line Input #InFile,aaa

Select aaa
case 1
Print #1,aaa
case 2
print #2,aaa



End Selest

といったかんじで・・・

投稿日時 - 2004-12-03 17:46:03

ANo.3

1のモノです

ファイルオープンする直前でデバックをとめて、
i、jとファイル名の変数の内容を確認されました?
同じになってませんか

または、本当にファイルを開いていることはありませんか。どこかで排他で1回オープンしたあとクローズしてない、などなど。
試しに、絶対開いてない!というファイルを適当に作ってオープンしてみるのもいいかもしれません

投稿日時 - 2004-12-03 10:47:04

補足

ファイル名は別になっています。
i , j は同じ内容で 1 になっていました。
なぜ同じ内容になるのでしょう?
回避方法はあるのでしょうか?

投稿日時 - 2004-12-03 11:00:40

ANo.2

分割ということは、複数のテキストファイルを作成するということですよね?
であれば、分割先のファイルを作成するときに、異なるテキストファイルをopenする必要があります。
エラーの内容からすると、元のファイルを続けてオープンしようとしているように思えるのですが、どうでしょうか。

投稿日時 - 2004-12-03 10:02:13

補足

とりあえずは別の名前を設定しています。
OutFileName_001 ~ OutFileName_099
といった感じで・・・
ファイル名が長すぎるのでしょうか?
ただ実際のファイルは 001 ~ 009 の各フォルダ配下の同じ名前のファイルです。

また FreeFileの代わりに数値を指定すると、エラーは出ませんが、最後のファイルしか出力されませんでした。

投稿日時 - 2004-12-03 10:10:58

ANo.1

dim i as integer
dim j as integer

i = freefile
j = freefile

open xxxx i
open xxxx j

close i
close j

大雑把ですが、上記の様にすれば複数ファイルでも問題ありません

投稿日時 - 2004-12-03 09:45:25

補足

上記のコーディングを試したのですが、

実行時エラー'55';
ファイルは既に開かれています。

と出て デバックを選択すると2つ目のオープンで発生しています。

投稿日時 - 2004-12-03 09:48:09

あなたにオススメの質問