• ベストアンサー

VBでファイル分割の方法

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

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

  • ベストアンサー
  • Azzuri
  • ベストアンサー率68% (34/50)
回答No.4

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

KIMV
質問者

補足

ありがとうございます。 変わりました。 後の問題点が最終の出力ファイルしかレコードが出力されていないことです。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

noname#8445
noname#8445
回答No.7

間違えました do unti 条件 を do until eof(1) です

KIMV
質問者

補足

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

全文を見る
すると、全ての回答が全文表示されます。
noname#8445
noname#8445
回答No.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 違ってますか? 先に書いたのは入るところはセットで でるところもセットで書きました なんですが

全文を見る
すると、全ての回答が全文表示されます。
noname#8445
noname#8445
回答No.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 をループでまわせばできると思いますが

KIMV
質問者

補足

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)
回答No.3

1のモノです ファイルオープンする直前でデバックをとめて、 i、jとファイル名の変数の内容を確認されました? 同じになってませんか または、本当にファイルを開いていることはありませんか。どこかで排他で1回オープンしたあとクローズしてない、などなど。 試しに、絶対開いてない!というファイルを適当に作ってオープンしてみるのもいいかもしれません

KIMV
質問者

補足

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

全文を見る
すると、全ての回答が全文表示されます。
  • Azzuri
  • ベストアンサー率68% (34/50)
回答No.2

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

KIMV
質問者

補足

とりあえずは別の名前を設定しています。 OutFileName_001 ~ OutFileName_099 といった感じで・・・ ファイル名が長すぎるのでしょうか? ただ実際のファイルは 001 ~ 009 の各フォルダ配下の同じ名前のファイルです。 また FreeFileの代わりに数値を指定すると、エラーは出ませんが、最後のファイルしか出力されませんでした。

全文を見る
すると、全ての回答が全文表示されます。
  • wakap
  • ベストアンサー率14% (13/89)
回答No.1

dim i as integer dim j as integer i = freefile j = freefile open xxxx i open xxxx j close i close j 大雑把ですが、上記の様にすれば複数ファイルでも問題ありません

KIMV
質問者

補足

上記のコーディングを試したのですが、 実行時エラー'55'; ファイルは既に開かれています。 と出て デバックを選択すると2つ目のオープンで発生しています。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • テキストファイルを分割したい

    テキストファイルを指定の容量などで区切り同じくテキストファイル形式で出力するソフトを探しています。 例えば400KBのテキストファイルを10Kbで40個のテキストに分割といった風なことが出来る物を探しています。 指定の容量が無理でも指定文字数などで区切るタイプでも構いませんので ご存知の方教えていただけないでしょうか

  • VBからテキストファイル(タブ区切り)をエクセルで開く方法

    VBからテキストファイル(タブ区切り)をエクセルで開く方法を探しています。CSVデータを出力する方法や、テキストファイルを読み込む方法等の情報はたくさんあるのですが、直接エクセルを起動し、それにテキストファイルを出力するのはなかなか見当たらない状況です。 質問の主旨は、もともと、参照ボタンを押下すると、選択されている指定のテキストファイルを保存するダイアログが出力される仕組みであったものを、どうせ開くのはエクセルだからと言うユーザーの要望から、参照ボタンクリックと同時にエクセルが起動し指定のテキストファイルをエクセルで開いて見ることができるように改造するといったものです。(参照のみですので読み取り専用で見たい) テキストファイルをドラッグしてエクセルシートに持っていけばタブを認識して格セルに分割して開いてくれるのですが、VBから同じような動作をさせることは可能なのでしょうか? よいヒントになるような情報でもかまいません うまく説明できずわかりにくいかも知れませんがご助言をお願いいたします。 【環境】 WindowsXP、VB6.0、EXCEL2002

  • INPUTデータを分割したい! 

    はじめまして。 あるテキストファイルから、データを読み取り、そのデータを分割して、ファイル出力しようとしています。 そのデータ分割をする際の、サンプルとなるようなコードを紹介していただけないでしょうか? 以上、よろしくお願いいたします。

  • VB6でのデータの編集(ファイル処理)

    VB6でのプログラムについて質問させていただきます. テキストファイル(.txt)に添付画像のような内容が入っています. このテキストファイルをキーワード分のテキストファイルに分割したいです.  キーワードとは画像の場合,「りんご」,「みかん」,「ぶどう」以上の三つとなります.(「:」の改行前の単語) それら三つをタイトルとしたテキストファイルを生成し,(タイトルが数十個ある場合もあります) その中身にそれぞれのキーワードの下の行を編集したものを出力したいです. 「りんごの場合」 ブラジル1302.6585 フランス 1081.1385・・・の部分を ------------------------------------------------- (りんど.tet内に) ブラジル 1302.6585 フランス 1081.1385 ・ ・ ・  (この単語と数値のセットは30個以内です) ・ ・ --------------------------------------------------- とそれぞれのセットを改行して出力したいです. 元データの単語(ブラジル)と数値(1302.6585)の間,また数値と次の単語(フランス)間はそれぞれタブで間が開いています. また,出力の際も単語(ブラジル)と数値(1302.6585)の間はタブで間を空けたいです. 宜しくお願いいたします.

  • バッチファイルでテキストファイルを分割したい

    テキストファイルを、指定した数値の倍数の行を、指定した個数に分割するバッチファイルを作成しようとしています。 例えば、以下の様な内容の「in.txt」というテキストファイルを3分割したい場合、 ----- in.txtの内容 ----- 1 2 3 4 5 6 7 8 9 10 ------------------------ 以下の様な内容で、 「out1.txt」「out2.txt」「out3.txt」として出力したいのです。 ----- out1.txtの内容 ----- 1 4 7 10 -------------------------- ----- out2.txtの内容 ----- 2 5 8 -------------------------- ----- out3.txtの内容 ----- 3 6 9 -------------------------- 自分はプログラミングの知識がないので、WEBに書かれている構文を少し書き換えたりして試しているのですが、うまく行きません。 AWKを使い、以下のようなバッチファイルを作成して実行してみましたが、「out3.txt」だけがうまく行きませんでした。構文の意味も分からないので修正も出来ません。 awk "NR%%3==1" "in.txt" > "out1.txt" awk "NR%%3==2" "in.txt" > "out2.txt" awk "NR%%3==3" "in.txt" > "out3.txt" AWKの解説ページを読み始めたのですが、時間的な猶予があまり無く、今回質問させて頂いた処理が出来るようになるまでまだ時間が掛かりそうなので、どなたかお分かりの方がおられましたお教え頂けないでしょうか。 AWKでなくとも、sedでもPerlでもその他のコマンドでも構いませんし、スクリプトファイルを読み込めるコマンドでしたらスクリプトでの書き方でも結構ですので、ご存知の方がおられましたらお教え頂けないでしょうか。

  • VB6.0でTextファイルをExcel出力

    お世話になります。 VB6.0でTextファイル(カンマ区切りのデータが入っているもの)をExcelに出力するものを作成しました。 基本的に読込んだファイルをArrayで型を指定してExcelに出力する形です。 ですが、印刷するときにA4横に収まらない長さになってしまったので、 Textファイルの1行のデータをExcelには2行にして出力させることは可能ですか? Textファイルのデータはこんなのです。 XXXX,SS,SS,AA,DD,WW,Fed,fk,aaa,aqee このような形で数百件入っています。 何か参考になりそうなものがあったら教えてください。 よろしくお願いします。

  • ファイルが開かれているかどうかの判断

    ある処理を行ってその結果をテキスト形(メモ帳など)に出力するもの作成しています。 EXCELだと FILENO = FreeFile Open パス名 For Output As #FILENO これでもし指定のファイルがすでに開いていたらエラーになってエラールーチンで拾えるのですが テキスト形(メモ帳など)のときだとエラーになりません。 どう対処すればいいのですか?

  • Access2007で好きな様式でテキストファイルに出力したい

    Access2007を使用し、データベースを作成しました。 その中のデータを指定した様式に整えて、テキストファイルに出力出来るようにしたいのですが、どのようにすればいいでしょうか? 具体的には、 レコードが、 |ID|名前|電話番号 | |01|A |1234-5678| |02|B |2345-6789| |03|C |3456-7890| となっているのを、 Aさんの番号は1234-5678です。 Bさんの番号は2345-6789です。 Cさんの番号は3456-7890です。 とテキストファイルに出力したいんです。 よろしくお願いします。

  • テキストファイルを分割&ページ数を追記しHTMLファイルにするプログラム

    テキストファイルを分割&ページ数を追記しHTMLファイルにするプログラムを教えてください。 (Perl/Ruby/Pythonのいずれかで) テキストファイルを分割&ページ数を追記しHTMLファイルにするプログラムを教えてください。 (Perl/Ruby/Pythonのいずれかで) 手元にあるテキストファイルを指定の行数(もしくは文字数)で分割しHTMLファイルにしたいと考えています。 [sample.txt(10分割)→1.html~10.html] フリーの分割ソフトはあるようですが ・分割とHTML化を同時にしたい ・ページ下部にファイルに対応したページ番号がつけたい  (1.htmlの下部に:<p>1ページ</p>のようなイメージ) ・最近プログラミングの勉強をしていていろんなコードを見てみたい という理由で利用しないつもりです。 何卒よろしくお願いいたします。

  • Accessのデータをテキストファイルで出力する方法を教えてください。

    Accessのデータをテキストファイルで出力する方法を教えてください。 クエリで抽出したデータをテキストファイルに出力したいのですが、下記のような記述では""や,で区切られてしまいます。 DoCmd.TransferText acExportDelim, "", "クエリ名", "出力ファイル.txt" フィールドごとに改行して出力する方法はないでしょうか? <クエリ結果> フィールド1  フィールド2  フィールド3 aaa      bbb      ccc <出力テキストファイル> aaa bbb ccc