• ベストアンサー

テキストファイルの特定行の削除方法

Accessからテキストファイルのオープンし、特定行を削除してクローズしたいです。どうすれば良いでしょうか。

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

  • ベストアンサー
noname#22222
noname#22222
回答No.2

FileRead()は、指定のテキストファイルから1行づつ読み込んで返す関数です。 これを利用して、1行づつチェックして書き出すのが一つの方法です。 もっと、簡単なのは、FileReadArray() で一気に変数に呼び込むことです。 UBound()などで配列に呼び込んだ行数を取得してチェックして不要行を削除します。 FileWrite()で書き出します。 Public Function FileRead(ByVal FileName As String, Optional isStop As Boolean = False) As String On Error GoTo Err_FileRead   Static isOpen As Boolean   Static fso  As FileSystemObject   Static fil  As File   Static txs  As TextStream      If Not isOpen Then     isOpen = True     Set fso = New FileSystemObject     Set fil = fso.GetFile(FileName)     Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault)   End If   FileRead = IIf(fil.Name = FileName, txs.ReadLine, "") Exit_FileRead:   If Len(FileRead) = 0 Or isStop Then     isOpen = False     Set txs = Nothing     Set fil = Nothing     Set fso = Nothing   End If   Exit Function Err_FileRead:   Resume Exit_FileRead End Function Public Function FileReadArray(ByVal FileName As String) As String() On Error GoTo Err_FileReadArray    Dim fso    As FileSystemObject    Dim fil    As File    Dim txs    As TextStream    Dim strText  As String    Dim strTexts() As String       Set fso = New FileSystemObject    Set fil = fso.GetFile(FileName)    Set txs = fil.OpenAsTextStream(ForReading, TristateUseDefault)    strText = txs.ReadAll    strTexts = Split(strText, Chr$(13) & Chr$(10)) Exit_FileReadArray:    FileReadArray = strTexts()    Exit Function Err_FileReadArray:    MsgBox Err.Description & "(FileReadArray)", vbExclamation, " 関数エラーメッセージ"    strTexts() = Split("")    Resume Exit_FileReadArray End Function Public Function FileWrite(ByVal FileName As String, _              ByVal Text As String) As Boolean On Error GoTo Err_FileWrite   Dim fso As FileSystemObject   Dim txs As TextStream      Set fso = New FileSystemObject   Set txs = fso.CreateTextFile(FileName, True)   txs.Write Text   FileWrite = True Exit_FileWrite:   Exit Function Err_FileWrite:   MsgBox Err.Description & "(FileWrite)", vbExclamation, " 関数エラーメッセージ"   Resume Exit_FileWrite End Function

ton_jiru
質問者

お礼

ありがとうございます。 良く理解できました。

その他の回答 (1)

noname#60992
noname#60992
回答No.1

わかりやすい手順としては、 ファイルを仮テーブルに1行ずつ読み込み、 特定行をテーブルから削除して、 全レコードを新規に書き出す。 わからない部分を特定していただけると、もっと具体的にお答えできると思います。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2232969
ton_jiru
質問者

お礼

ありがとうございます。

関連するQ&A

  • ファイルの中の特定の行だけを削除したい

    あるファイルの特定の行だけを削除したいのですが、高速に行う方法はありませんか? とあるファイルがあり、これは数行~数万行にも及ぶ可能性のある大規模なファイルです。 このファイルの、特定の行を検索してその行だけ削除し、空いてしまった行は詰めたいのですが、どのようにすれば高速に行えますか? かなり遅い方法だと、 xxx = "hoge\n" arr = [] f = open("file") f.each{|line| if line != xxx then arr<<line end } f.close open("file", "w").puts arr.join() などが考えられるのですが、遅すぎて使えないはずです。 速度が求められる処理のため、困ってます。 もしご存じの方がいらっしゃいましたら、教えて頂けませんか?

    • ベストアンサー
    • Ruby
  • 100万行のテキスト ファイル サクサク動く?

    バックアップ、復元ソフトを作りながらC#を勉強してます。 復元するために、HDD内のファイルの情報(パス)を記録しておく必要があります。(あると思っている。違うのかもしれない。) そうするとHDD内の100万個のデータに対し、100万行のテキストファイルを作ることになります。 普段こんな膨大な行数のファイルを扱ったことはありませんが、オープンやクローズ、編集などサクサク動くものなのでしょうか?

  • テキスト中の特定の文字を含む行を丸ごと削除する機能

    テキスト中で、ある特定の文字を含んでいる行を、丸ごと一括で削除できるソフトはありませんか? 例えば、 あ□いいいうううええお ああ○いいううええおお ○あああいいいううええ あいい△ううううええお というテキストで、○を含む行だけを丸ごと削除すると言うことです。 よろしくお願いします。 市販のソフトではWordがあります。

  • バッチファイルを使ってテキストファイルの任意の行を削除したい

    こんにちは。 バッチファイルを使って、テキストファイルの任意の行を削除したいのですが、可能でしょうか? 今困っているのは、あるファイルの1行目と2行目と最後の行を削除したいのですが、コマンドがわかりません。 いろいろ調べてみたのですが、わかりませんでした。 よろしくお願いします。

  • テキストで特定の文字列を含む行を削除

    テキストエディタで特定文字列を含む行と空白の行を削除したいです。 このようなことができるフリーのソフトがあったら教えてください。 テキストデータは数メガになりますのでメモ帳のような簡単なエディタでは開けません。 また、エクセルでも最大行を超えるため読み込めません。

  • CSVファイルの特定行の削除

    CSVファイルの特定行を削除するということは可能なのでしょうか? 可能であれば教えて頂けないでしょうか? お願いします。

  • テキストファイル内の特定行の一括変換

    テキストファイルがたくさんあります。 そのすべてのテキストファイルの中の特定の行を一括で変換する方法をご存じありませんでようか。 よろしくお願いします。

  • テキストファイルの最終行の削除

    C++Builder6です。 テキストファイルの最終行だけを削除する方法を 探しています。 詳しく言えば、ファイルを開けないで、最後にある 改行コード?のみを削除したいです。 よろしくお願いします。

  • テキストファイルの重複行を削除できますか?

    テキストファイルを読み込んだ際に重複行を削除する 事とかって出来ますでしょうか?? そういう削除関数みたいなのがないんですよね。。。。 C言語って.......

  • VBAでテキストファイルからの特定行抽出

    エクセルのVBAで、テキストファイルから、特定の文字を含まない行だけを、別のテキストファイルに取り出す方法を教えてください。 具体的には、元のテキストファイルの中から、「.png」と、「.jpg」を含まない行を取り出して、別のテキストファイルに書き出したい。 元のテキストファイルは、エクセルでそのまま読み込むにはデータが大きすぎてエラーになってしまうので、、VBAで不要なデータを取り除いて、ファイルを小さくしていって、エクセルで扱える大きさにしていこうと思っています。 どなたかおわかりになる方がいらっしゃいましたら、どうぞよろしくお願いいたします。

専門家に質問してみよう