- ベストアンサー
50万行のtxtファイルを行数指定で分割したい
50万行レベルのテキストファイルがあります このファイルをVBAで行数を指定して3つのファイルに分割したいのですが可能でしょうか イメージとしては以下のような形になります ・一行目〜テキストボックス1で指定した行数 ・textbox1で指定した行数〜textbox2で指定した行数 ・textbox2で指定した行数〜最終行 どなたか教えて下さい よろしくお願いします
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>Windowsでテキストファイルを行数指定で分割する https://tsuredurediary.com/archives/windows-textfile-split.html のPSスクリプトを、VBAから呼び出すだけで実現できると思います。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
質問者はVBA(エクセル)経験者か? ファイルをOpenして、レコード数に+1して、1レコード(=1行に当たる)を読み、新しいファイルに書く。たとえばレコード数が20万以上になったら、現状のファイルはCloseして、新しいファイル名を要求して、入力させ、そのファイルに書き出す。InputFileのEOFまでそれを繰り返す。 だたし、「時間がかかる」という点は、研究課題だろうが、初心者が云々する課題ではない。 50万件は、多いと言えようが、昔は反応に15分以上かかる、大型機による検索も経験しているが、そんなことを経験している小生にとって、少し他のことをやってれば仕舞いの時間だろう。 質問は、どういう状況での1場面なのか書いてない(読者に判らない)。 AIなどのプログラムを走らせている場面の1ステップなのか、単発課題(オフラインバッチ)か? ーー この手のVBAコードなど、やってみたか? 「vba テキストファイル 読み込み」で検索など。 http://officetanaka.net/excel/vba/file/file08b.htm http://officetanaka.net/excel/vba/speed/s15.htm 出来るだけシートのセルへの読み書きはしないこと。一旦シートに書き込んだりすると時間のロス。 エクセルの課題ではないのだと思う。エクセル以前の旧Basic時代のコードでテキストを読む・書くで 済む話だと思う。項目(列、フィールドなど)などには、係わらなくてよいだろう。 Line InputとInputとどちらがよいか? FSOとVBAと比べてどうか。 https://www.239-programing.com/excel-vba/basic/basic092.html
- bardfish
- ベストアンサー率28% (5029/17766)
出来ますよ。 プログラミングとしては基礎レベルですので簡単にできます。 まずは、難しく考えずにイメージしていることを一つずつ実行していきましょう。 で、後で組み合わせてみるのが一番簡単。 効率的なコードとかはそれからですね。 勉強の教材としてはいいと思います。
お礼
返信ありがとうございます Loopで一行ずつ読み込んで分割というのはイメージできますが、数万行なので処理時間がかかるのですぐに処理完了できるコードを組みたいのですが可能でしょうか? VBA内で完結したいです もう少しアドバイスを頂いてもよろしいでしょうか よろしくお願いします
お礼
ありがとうございます。 できればVBA内で完結したいのですが可能でしょうか? Loopで回すと時間がかかるのですぐに処理終了するようにしたいですが、なかなか思いつかず悩んでいるところです