OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

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

  • すぐに回答を!
  • 質問No.123125
  • 閲覧数803
  • ありがとう数4
  • 気になる数0
  • 回答数2
  • コメント数0

どなたかご教授ください。

VBでテキストファイルを読み込ませ、指定した部分を置換させて、保存したいのです。そんなことできますか。よろしくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全2件)

  • 回答No.1
レベル11

ベストアンサー率 50% (173/345)

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

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

という手順です。
お礼コメント
noname#2461

ありがとうございます。とりあえずやってみます。また解らないことがあったらよろしくお願いします。
投稿日時 - 2001-08-24 09:49:33


  • 回答No.2
レベル13

ベストアンサー率 46% (643/1383)

VBのバージョンによって、少し異なります。 VB6でしたら、Replace関数が使えるかと思いますので、置換は楽チンですね。VB5以前でしたら、Replace関数を自作してやらなくてはいけません。 とりあえず、VB5でも動作可能なプログラムです。(手元にあるのがVB5なんで) 特定の範囲だけ置換したいとかの特殊な要望があるときは、適宜書き換えてください。 Private Sub Comma ...続きを読む
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関数の方を使わせていただきます。
自分の環境を説明せずに質問して大変ご迷惑おかけしました。ただ構文の考え方が大変参考になりました。
投稿日時 - 2001-08-24 11:51:29
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ