• ベストアンサー

50万行のtxtファイルを行数指定で分割したい

50万行レベルのテキストファイルがあります このファイルをVBAで行数を指定して3つのファイルに分割したいのですが可能でしょうか イメージとしては以下のような形になります ・一行目〜テキストボックス1で指定した行数 ・textbox1で指定した行数〜textbox2で指定した行数 ・textbox2で指定した行数〜最終行 どなたか教えて下さい よろしくお願いします

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

  • ベストアンサー
  • TIGANS
  • ベストアンサー率35% (244/680)
回答No.1

>Windowsでテキストファイルを行数指定で分割する https://tsuredurediary.com/archives/windows-textfile-split.html のPSスクリプトを、VBAから呼び出すだけで実現できると思います。

kyoko2020
質問者

お礼

ありがとうございます。 できればVBA内で完結したいのですが可能でしょうか? Loopで回すと時間がかかるのですぐに処理終了するようにしたいですが、なかなか思いつかず悩んでいるところです

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

質問者は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/17765)
回答No.2

出来ますよ。 プログラミングとしては基礎レベルですので簡単にできます。 まずは、難しく考えずにイメージしていることを一つずつ実行していきましょう。 で、後で組み合わせてみるのが一番簡単。 効率的なコードとかはそれからですね。 勉強の教材としてはいいと思います。

kyoko2020
質問者

お礼

返信ありがとうございます Loopで一行ずつ読み込んで分割というのはイメージできますが、数万行なので処理時間がかかるのですぐに処理完了できるコードを組みたいのですが可能でしょうか? VBA内で完結したいです もう少しアドバイスを頂いてもよろしいでしょうか よろしくお願いします

関連するQ&A

  • 【VBA】テキストファイルを指定行数からの読み込み

    こんばんは。 EXCEL VBAでテキストファイルを読み込む事について質問です。 VBAでテキストファイルをこちらから指定する行数(上から何番目という感じで)からデーターを読み込みたいのですが、どの関数をつかっていいかわからず困っています。 1行ずつ読みこむ「Input Line関数」では、無駄な行まで読み込むので動作が遅くなります。 読み込みたい行はすでにわかっているので、最初からその行に飛んでからデーター読み込みたいと思ってます。 ちなみに指定する行数は、ファイルによって違います。 あらかじめ「Input Line関数」で、ある文字が何行目にあるかを探す行為をあらかじめ行っています。 みなさまのアイデアを拝借したく、よろしくお願いします。

  • テキストファイルで行数指定で移動

    2つ前に質問した者です。テキストファイルの検索のため行数を指定して移動したいのですがどうしたらいいですか? (つまりn行目を指定して移動する方法)

    • ベストアンサー
    • Java
  • CSVから指定行だけを読み込み

    VB.NETを使用しています。 行数がランダムなCSVファイルからReadLineを使用して 1行を読み込むことは可能なのですが これを指定した行(例えば最終行)を読み込ませる為には どのように指定すればいいのでしょうか?

  • TXTファイルからExcelへ指定行を抽出

    OffceXPを使用しております。 表題の通りなのですが、テキストファイル内のデータから指定した行をExcelのファイルへ抽出する方法を教えて下さい。 (ファイルは「.TXT」形式と「.CSV」形式の2種類が用意できます。) 当初はファイル名の一覧行を作り 「='ドライブ名:\フォルダ名\[ファイル名.csv]シート名'!$A$1」 の式を用いて表を作成しようとしたのですが、この方法ではファイルを全部開き値を更新しないとエラーが出てしまいました。 ファイルは200以上有り、1つ1つを開いてデータを引っ張るには無理があります。 フリーソフトを探してみましたが、指定文字を含む行を抽出するソフトは数多くあったのですが、 「指定行」というのが見つからず、お手上げです。 関数や数式・VBAもしくはフリーソフト等、簡易にデータ抽出が出来れば何でも結構です。 但し、VBAに関しては殆ど知識が無いので、解り易く書いて頂けると幸いです。 欲を言えば、ファイル名も同時に抽出出来ればあり難いですが、こちらはさほどこだわりません。 良い方法をご存知な方がいらっしゃればどうかご教示下さいませ。 宜しくお願い致します。

  • テキストファイルの行を指定して読み込み

    テキストファイルの読み込みたい行を指定して テキストボックスに表示させたいのですが、 どのようにすればよいでしょうか? StreamReaderには一行分の文字を読み取るReadLine メソッドがありますが、行は指定はできないようです。 良い方法があればアドバイスを頂きたいです。 よろしくお願いします。 --- 開発環境:VS2005 pro OS:Vista

  • 【C#】textBoxの指定行のデータを削除

    凄く基本的なことかもしれないのですが色々検索しても見つからなかったので質問させてください。 Visual C# 2010を使っています。 textBoxのMultiLineをtrueにして複数行書けるようにしています。 そこで、プログラム上で指定の行を削除したり書き換えたりする方法を知りたいです。 指定の行のデータを取得する方法はわかったのですが、応用できませんでした。 MessageBox.Show(textBox1.Lines[0].ToString()); で、1行目のデータをMessageBoxで表示できました。 なので、以下のように書けば削除できるかと思いましたがダメでした。 textBox1.Lines[0] = ""; もしくは textBox1.Lines[0].Remove(0); 目的は、以下のような複数行のデータがあった場合に指定の行を消すといったことです。 1234 5678 9012 で、例えば、2行目を消して 1234 9012 としたいです。 textBox1.Text = textBox1.Text.Replace(textBox1.Lines[0], ""); とやって置き換えることはできるのですが、同じデータがある場合に全て置き換わってしまうのと、改行が残ってしまうので微妙です。 よろしくお願いします。

  • Word のテキストボックスごとに行数(各行の隙間)をかえたい

    WindowsXPのWord2003です。テキストボックスをいくつか貼り付けてあり、そのうち一つは文字サイズ7ぐらいで細かい情報をいれます。横の字幅は「書式→フォント」で狭く設定することができますが、行を狭く設定する方法がわかりません。「ファイル→ページ設定」で行数指定すると狭くできますが、バックの文章や他のテキストボックス内の行数も影響をうけてしまいます。特定のテキストボックス内のみ行数を狭くするのはどうすればよいでしょうか。

  • ファイルから指定行数分だけ読み込む

    あるファイルに下記のようにタブで区切られた、ログのようなファイルがあった場合。 aaa test 1 bbb test 2 ccc test 3   ・   ・   ・ このログの1行目~30行目まで1行ずつGETしたい場合や、30行目~60行目までGETしたい場合はどのようにしたらいいのでしょうか?? 30行ずつ配列にいれこんだあとに、表示させようと思ったのですが、手間がかかりそうなので。。 grepでもこのように行数を指定できるやり方があればいいのですが。。。

    • ベストアンサー
    • PHP
  • テキスト指定数行分割保存可能なエディタでフリーソフトはありますか?

    1000行あるテキストを 100行指定で分割保存したいのですが、 テキストを指定数行分割し 保存できるフリーソフトはありませんか? 宜しくお願いします。

  • 巨大なテキストファイルを行単位で分割したい

     大きなテキストファイルを行単位で分割するツールを探しています。  実例として、1行が3000バイト、10万件を2万件づつに分割する 程度かそれ以上の作業ができるものを探しています。  容量で分割してしまったり、分割後のファイルのヘッダやトレイラに 管理情報を付加するものはダメです。  改行コードは存在しますが、無い場合の為に1レコードの長さを指定 できるものであれば尚良いです。  以上よろしくお願いします。

専門家に質問してみよう