• ベストアンサー

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

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

専門家に質問してみよう