プロが教える店舗&オフィスのセキュリティ対策術

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

A 回答 (7件)

dim i as integer


dim j as integer

i = freefile
j = freefile

open xxxx i
open xxxx j

close i
close j

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

この回答への補足

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

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

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

補足日時:2004/12/03 09:48
    • good
    • 0

分割ということは、複数のテキストファイルを作成するということですよね?


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

この回答への補足

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

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

補足日時:2004/12/03 10:10
    • good
    • 0

1のモノです



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

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

この回答への補足

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

補足日時:2004/12/03 11:00
    • good
    • 0

FreeFileでファイル番号を取得しOpenした後で、再度FreeFileでファイル番号を取得してください。


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

この回答への補足

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

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

補足日時:2004/12/03 17:41
    • good
    • 0

ロード


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

といったかんじで・・・

補足日時:2004/12/03 17:46
    • good
    • 0

正確に書くと



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

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

なんですが
    • good
    • 0

間違えました



do unti 条件



do until eof(1)

です

この回答への補足

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

補足日時:2004/12/03 18:09
    • good
    • 0

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