• ベストアンサー

VB6.0 テキストファイルの操作について

最近FileSystemObjectを覚えた者です。そこで質問なんですが、 FileSystemObjectを使用すると様々なテキストファイルの操作が可能ですが、Openステートメントでも同じようなことができると思うのですが、この二つの手法の長所と短所と、使用例など教えていただけたらと思います。よろしくお願いします。

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

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

こんにちは。 ■ テキストの読み書き速度について。 従来の Open, Line Input 等のステートメントよりも、FileSystemObject の テキストストリームを使った方が高速です。私の環境で約 60% 程度。比較 ソースを書いてみて下さい。したがって、 ■ 扱うファイルサイズが大きい場合は、FileSystemObject が有利。 対して、小さなサイズのファイルを扱う場合は、どのような方法であっても 体感できる差は無いでしょう。しかし、極端な例で一行テキストを書き出す 場合。FileSystemObject は   Set fso = CreateObject("Scripting.FileSystemObject") といった初期化に必要な時間、オーバーヘッドが発生しますから、それなら Print でサクっと書いてしまった方が速い....ということもあるわけです。 したがって、 ■ 扱うファイルサイズが小さい場合は、Open, Line Input 等が有利。 どのファイルサイズで大小を分けるかは、ケースバイケースなので具体的 には言えませんが、大まかにこのような線引きはできるかな。 以下、余談で参考まで。 FileSystemObject は機能的に非常によく考えられており、上述の読み書きの 速さ以外にも   1. 優れた可読性をもったソースが書ける   2. ファイル・フォルダの列挙、移動、コピー、削除等のオペレーション     に便利なコマンドが多数用意されている といった重要なアドバンテージをもっています。 Open, Line Input 等は VB 初期のころからあるステートメントで多少時代遅れ の感は否めませんよね。ファイル I/O は、FileSystemObject に絞って覚えて 構わないと思います。   # Dir 関数は再帰処理できない、不便。でも、ファイル列挙は Dir の   # 方が速かったりする。全てのケースで FileSystemObject が有利とは   # 限らない。   # 結局、そのうち「両方マスターしとかないと...」ということになる   # と思いますが。使い分けですね。   # テストソースをご自分で書いて、試行錯誤を重ねて下さいね (・∀・)b

butman11
質問者

お礼

二つの手法について、長所と短所を分かりやすく説明していただいて 助かりました!! ファイルシステムオブジェクトは、覚えるとかなり便利そうですね。 がんばってマスターします。

その他の回答 (1)

回答No.1

使用例は自分で探せるでしょう。 Open ステートメント~ファイルの読み込み(or 書き込み)~ Close だと何だか書き方が直感的じゃないですね。 Open ステートメントの書き方も慣れないし、Line Input も同様。 FileSystemObject だと Dim fso As New Scripting.FileSystemObject Dim ts As Scripting.TextStream Set ts = fso.OpenTextFile("D:\aaa.txt", ForReading, False) Dim lText As String lText = ts.ReadLine MsgBox lText ts.Close てな感じで、書き方の整合がとれてる感じがします。 ファイルの作成やら移動やらコピーやら、FileSystemObject のその他のオブジェクトやメソッドとの親和性も高いですし、これらを使い出すと VB の Open や Dir などファイル操作関連のチグハグさが目立ち、使いづらくて仕方ないです。 まぁ個人的な感想ですけど。

butman11
質問者

お礼

自分は逆にOpenやDirとか使ってたものなんで、 まだFileSystemObjectがしっくりこないんですが、様々なメソッドも 用意されてるみたいなので、がんばって覚えてみます。 ありがとうございました。

関連するQ&A

  • VB6.0 ファイル操作

    教えて下さい VB6.0環境下でのファイル操作ですが、 テキストファイルの一部を書き換えたいのですが、それを行う手法を教えて下さい。 ファイルの中身をすべてINPUTして書き換えてWRITEする方法ではなく、その一部分だけを書き換えたいのですが、教えて下さい。

  • vb2008 テキストファイルを開くには?

    vb2008 テキストファイルを開くには? VB2008を使用している者です。今回もアドバイス宜しくお願い致します。 あるテキストファイルをOPENしたいと思っているのですが、やり方がわかりません。 VB2008でファイルを開く方法として一般的なのがOpenFileDialogを使用した方法ですが、 これだといちいち開きたいファイルを指定しなければなりません。その都度ファイルを 指定するのではなく、開きたいファイルをピンポイントで開きたいのです。 いろいろ検索しましたが、全くヒットしませんでした。 皆様のご指導、宜しくお願い致します。

  • VBでのテキストファイルの 読み込み & 書き出し について

    テキストファイルの中味を全部読み込んで、テキストボックスに表示するというコードをOpenステートメントを使って書いています。 その際、1つの種類のデータを1つのテキストファィルとして書き出し&読み込み しているのですが、これですと種類が増えていくとともにテキストファイルの 数もどんどん増えてしまい効率が悪いです。 で、それらを1つのテキストファイルにまとめておいて、中をセクションに 区切って、それを読み込み&書き出しする方法はあるのでしょうか? データが1行ですと分かるのですが、それぞれが長いテキストデータを1つの テキストファイルに区切って書き出し&読み込みする方法が分かりません。 どなたか教えてください!!!!!!! よろしくお願いします。

  • ファイル操作

    ExcelVBAでテキストファイルを読み込み、特定の文字を置換したいと思っています。 Openステートメントでinputを使うと読み込みで、outputを使うと書き込みなのは、わかります。 ただ更新の仕方がわからないのです。 よろしかったら教えてください。

  • VBでテキストファイルを作成して,また消したい

    VisualBasicでDLLファイルを呼び出して実行したいのですが, その際に,テキストに一度引数を入れたいと思っています. しかし,不要になれば,そのつどプログラムの中でテキストファイルを削除したいと思っています. テキスト作成は  Open App.Path + "\新規作成.txt" For Output Access Write As 1 mystring = "ByVal ImaFile As String" Print #1, mystring Close #1 でできたのですが, テキストを削除する方法を教えてください. HELPには Sub Manip_Files() Dim fso As New FileSystemObject, txtfile As TextStream, fil1 As File, fil2 As File Set txtfile = fso.CreateTextFile("c:\testfile.txt", True) MsgBox "ファイルを削除します。" ' 現在の位置でファイルのハンドルを取得します。 Set fil1 = fso.GetFile("c:\tmp\testfile.txt") Set fil2 = fso.GetFile("c:\temp\testfile.txt") ' ファイルを削除します。 fil1.Delete fil2.Delete MsgBox "完了しました。" End Sub という方法が載っているのですが, 最初のFileSystemObjectでひっかかります. 参照設定が足らないと思われるのですが, 何を加えたらいいのでしょうか. 教えてください.

  • 参照するテキストファイルの数

    決め打ちのSQL文を記述したテキストファイルをOpenステートメントで 読み込み、テキストボックスへ表示させています。 できるだけVBのコードをメンテしないようにしたいので、テキストファイルで SQLを持っているのですが、いろんなパターンのSQL文がありテキストファイルが 8ファイルくらいになってしまいます。 参照する為のテキストファイルは、何ファイルくらいまでが理想なんでしょうか? いくつもあってもかまわないのでしょうか? 教えていただけませんでしょうか?? よろしくお願いいたします。

  • (ACCESS VBA)あるテキストファイルのデータを別のテキストに写す

    すいませんがたびたび質問させていただいていmynannです ACCESS VBAについての質問です まず商品マスタクエリに 商品コード 価格 001 \100 002 \150 003 \200 というデータがあり テキストファイル「text01.txt」に 「こちらのアドレスが商品のページです↓  http://goo.ne.jp/syouhin/」 この商品マスタの商品コードとtext01.txtで 「こちらのアドレスが商品のページです↓  http://goo.ne.jp/syouhin/001.html」 というようなファイルを出力するようなモジュールをつくろうと思っています 実際には商品コードは複雑ですし テキストファイルももっとたくさんの文章です で特に何を聞きたいかというと テキストファイルのテキストデータをどうやって 扱えばいいかがよくわかりません OPENステートメントとかつかうんでしょうか、、? どなたか助けてください!

  • ExcelVBAでファイルを開く時に使用中のファイルでないか調べる方法を教えてください。

    ExcelVBAの勉強を始めて間もない者です。 Office2000のExcelでマクロを作成しています。 テキストストリームオブジェクトを作成してファイルを開き、 ファイルの内容をセルに展開するプログラムを書いているのですが、 開こうとしているファイルが他のプロセスで開かれているかどうかを調べる方法はありませんか? Openステートメントを使用すればロックをかけることができるので、 エラーを発生させることができるみたいなのですが、 テキストストリームオブジェクトを使用してファイルを開いている場合に 開くファイルが他のプロセスで使用してるか調べる方法が知りたいです。 説明がわかりにくいとは思いますがよろしくお願いします。

  • ファイルの存在の有無を調べたい

    こんにちは. 現在VBで課題(研究?)をやっているのですが, 1.VisualBasicのOpenステートメントを使用してテキストファイルを作成し,   そこに書き込みをする 2.友達が作成したEXEをを呼び出す.   EXEでは,1で作成したテキストファイルに書かれたものを使用する ということをしたいのですが, Closeステートメントを使用して直後に2の動作に入るのですが そうするとファイルがありませとエラーがでてしまいます. でも,Closeステートメントでブレークポイントを置き, フォルダ内を見るとテキストファイルが存在していて, F5を押すとちゃんとEXEが起動するんです. 以上のエラーをなくすために For文でまわし, ファイルの存在の有無を調べ, ファイルの存在が確認された時点でFor文をBreakし, Exeを呼び出すという流れにしたいと思っています. しかし,ヘルプを見てもファイルの存在の有無を調べるステートメントや 関数が見つかりません. どうか助けてください.

  • テキストファイルの閉じ方について

    いつもお世話になります。 環境はXPを使用しています。 VBAでセルに設定してあるハイパーリンクを開くと テキストファイルが開くようにしてあります。 このテキストファイルを閉じようとするのですが、 閉じません。 ちなみにソースは以下の通りです。 intFileNum = FreeFile Open strFileName For Input As intFileNum i = 1 Do While Not EOF(intFileNum) Input #intFileNum, TextLine Cells(i, 1) = TextLine i = i + 1 Loop Close #intFileNum 最後のCloseで閉じないのはなぜですか? 初めてテキストファイルを操作するのでよくわかりません。 よろしくお願いします。

専門家に質問してみよう