• 締切済み

テキストの読み込みと置換について

どなたかご教授ください。 VBでテキストファイルを読み込ませ、指定した部分を置換させて、保存したいのです。そんなことできますか。よろしくお願いします。

みんなの回答

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.2

VBのバージョンによって、少し異なります。 VB6でしたら、Replace関数が使えるかと思いますので、置換は楽チンですね。VB5以前でしたら、Replace関数を自作してやらなくてはいけません。 とりあえず、VB5でも動作可能なプログラムです。(手元にあるのがVB5なんで) 特定の範囲だけ置換したいとかの特殊な要望があるときは、適宜書き換えてください。 Private Sub Command1_Click()  Dim Dat As String 'ファイルから読み込んだ内容を格納する変数  Dim InFile As Integer, OutFile As Integer 'ファイル番号  Dim Counter As Long    '対象ファイルをバックアップ(バックアップから読み込んで、元のファイル名で書き出す。) on error resume next  FileCopy "c:\…\xxxx.txt", "c:\…\xxxx.bak"  if err<>0 then   msgbox "ファイルが使えない"   exit sub  end if  Kill "c:\…\xxxx.txt"  'ファイルを開く(読み込むファイルと書き出すファイル)  InFile = FreeFile() 'ファイル番号の空きを取得  Open "c:\…\xxxx.bak" For Input As #InFile  OutFile = FreeFile()  Open "c:\…\xxxx.txt" For Output As #OutFile    'ファイルの末尾に達するまで1行ずつ読み込み、置換し、書き出す  Counter = 0  Do Until EOF(InFile)   Line Input #InFile, Dat 'ファイルから1行読み込み、変数Datに格納する   Counter = Counter + ReplaceString(Dat, "置換前の文字", "置換後の文字") '置換   Print #OutFile, Dat '書き出す  Loop    'ファイルを閉じる  Close #InFile  Close #OutFile    'バックアップを削除  Kill "c:\…\xxxx.bak"    '終了  MsgBox "完了!!" & vbNewLine & Counter & " 回置換しました。" End Sub Private Function ReplaceString(ByRef SrcString As String, FndStr As String, RepStr As String) As Long '文字列を置換する。戻り値は置換した個数。  Dim DelStrPos As Long  Dim SrcStart As Long  Dim RepLen As Long  Dim FndLen As Long    '検索開始位置を設定  SrcStart = 1  'ループの外に出せる計算式は、あらかじめ計算しておく  RepLen = Len(RepStr)  FndLen = Len(FndStr)  Do   '置換対象文字列の位置を検索   DelStrPos = InStr(SrcStart, SrcString, FndStr, vbBinaryCompare)   '見つからなかったら(置換完了で)ループを抜ける   If DelStrPos = 0 Then Exit Do   'カウンタの値(置換個数)を1つ増やす   ReplaceString = ReplaceString + 1   '置換   SrcString = Left$(SrcString, DelStrPos - 1) & RepStr _    & Right$(SrcString, Len(SrcString) - DelStrPos - FndLen + 1)   '検索開始位置を設定し直す(置換後の文字列を検索しないため)   SrcStart = DelStrPos + RepLen  Loop End Function

noname#2461
質問者

お礼

ありがとうございます。私の環境はVB6の方なので、Replace関数の方を使わせていただきます。 自分の環境を説明せずに質問して大変ご迷惑おかけしました。ただ構文の考え方が大変参考になりました。

  • mfuku
  • ベストアンサー率50% (173/345)
回答No.1

可能です。 Openステートメントでテキストファイルを開き、 テキストを読み込み、 Replace関数で文字列の置換を行い、 テキストを書き戻し、 Closeステートメントでテキストファイルを閉じる という手順です。

noname#2461
質問者

お礼

ありがとうございます。とりあえずやってみます。また解らないことがあったらよろしくお願いします。

関連するQ&A