• ベストアンサー

VB6.0 ファイル操作

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

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

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

既に回答が出ていますが、私は他のソフトと連携するなら見かけ上可能かもしれませんが、VBでは出来ないと思います。 ファイルはハードディスク等外部記憶装置にあるはずです。 目的の個所(目指す文字コードの部分)を探す(判別する)機能は、内部メモリに読みこまれないと出来ません(コンピュタの判別機能が働きません)。したがって気持的に「INPUTして書き換えてWRITEする方法ではなく」やりたいのは判りますが、原理的に不可能でしょう。 ただ通常の入出力は(1)「レコードの終わりと約束された文字コード」まで読むとか、(2)固定長(ランダムファイル。固定長=レコード長)を読んでくる約束になっていますが、(3)何バイト読むというステートメントもあるので、バイト数を大きく取れば、指令(INPUT的)を働かせる回数は少なくすることは可能でしょうが、書き戻す指令がないと困りますのでご注意を。 以上はレコード形式ですが、BINARY的に扱うなら (3)に限られます。 (1)の例INPUT#ステートメント-PRINT#      LINEINPUT#      MOVENEXT(MDB) (2)の例GET#ステートメント-PUT# (3)の例INPUT$(バイト数指定)-なし?      INPUT関数  (注)インプットファイルとアウトプットファイルは別ファイルにせざるをえないものが普通なので注意。BASICのランダムファイル形式の場合は元へ書き戻すはず。   ただし以上は原理的な話で、プログラムソース的には、FINDやREPLACEのようなものやAPI的なものなどが、別に出来あがっていると、INPUT指令は現われないが、実は少し前に読みこみをやっていたり、裏でやっていたりする場合があって、読みこんだという事が意識がされてないだけのこともある。 エクセルに読みこんで、VBAで置換のプログラムを組めば、プログラム上では、読む書くは出てこないが、エクセルが開く時に全レコードを読み、閉じる時に書いているのは常識です。 エクセルの「検索」「置換」などが例で、高級ソフトから学び始めると、あたかもそれがメモリに読みこむ機能を使っていることを意識しない人が出てくる。 質問者のご意向に沿って、置き換えが少数の語句なら、VBAでOPENTEXTで「テキストファイルを読みこめれば」、読みこんで、置換操作をしてマクロの記録を取り、改造して、テキストファイルで保存する手が使えるかもしれない。

その他の回答 (1)

  • KojiS
  • ベストアンサー率46% (145/312)
回答No.1

 ファイルをランダムアクセスかバイナリーモードで開いて移動して書き込む、で可能でしょう。  ただし、途中を変更した場合には長さは変わらないので、長さ(バイト数)の違う文字列を変更する場合はよく考えましょう。端的に言うとその場合は読んで書くという方法になります。

関連するQ&A