• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VBA】テキストファイルを指定行数からの読み込み)

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

このQ&Aのポイント
  • VBAでテキストファイルを指定行数から読み込む方法について質問です。
  • Input Line関数では無駄な行まで読み込むため、動作が遅くなります。
  • 指定する行数はファイルによって異なりますが、あらかじめ行を探しています。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

速度は分かりませんが、これとか http://officetanaka.net/excel/vba/filesystemobject/textstream10.htm あるいは、丸ごと読みこんで、改行コードでSplitして、文字列配列を相手に該当行検索も含めて処理するとか。 昨今のPCでは、相当大きなテキストファイルでもメモリー内で処理できると思います。 http://officetanaka.net/excel/vba/filesystemobject/textstream07.htm テキストファイルの構造によってはADOで処理する案も考えられますが、Recordsetにはファイルの先頭から(あるいは末尾先頭で)入っている事が保証されているのか、ちょっと心配。参考URLはCSVになっていますが、タブ区切りテキストファイル(拡張子.txt)でもいけます。 http://home.att.ne.jp/zeta/gen/excel/c04p47.htm 以上ご参考まで。

CookieMonster08
質問者

お礼

mitarashiさん 回答ありがとうございます。 いろいろ試したのですが、私のテクニック不足で回答内容と同様の処理にすることはできませんでした。 しかしそこからヒントを得まして結局、 (1)まずは1行ずつ読む(変数に格納するだけ) (2)行数をカウントしていき、任意の行数になるまでループします。 (3)任意の行数になったら、書き出すようにする。 上記の処理(1行ずつ読む)でもmitarashiさんの言うとおり、昨今のPCだと思っていたよりも処理が早く終わりました。 まずは、この処理で作っていきたいと思います。 しかし、せっかくアドバイス頂いたのでFSOを勉強して使えるようにします! 朝早くにご回答頂き、誠にありがとうございました。

その他の回答 (1)

回答No.1

>読み込みたい行はすでにわかっているので、最初からその行に飛んでからデーター読み込みたいと思ってます。 であれば、FileSystemObjectを使用し、.SkipLineで飛ばしたい行数分ループさせてみではどうでしょう。

CookieMonster08
質問者

お礼

piyo_dansyakuさん 回答ありがとうございます。 回答通りにFSPを駆使してSkipLineでループさせようとしましたが、私のテクニック不足(FSOの理解不足)で、思った通りの処理ができませんでした。 しかし「行数分ループさせる」からヒントを得て、効率が悪いのですが最初から1行ずつ読んで(変数格納のみ)、任意行の時だけ書き出すという処理にしました。 こうすると、処理ができました。 一旦はこの処理で行きたいと思います。 しかし、FSOでSkipLineを駆使すればもっと処理が早くなるのでFSOを勉強してSkipLineを使えるように頑張りたいと思います。 ありがとうございました。

関連するQ&A