• 締切済み

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

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

noname#2461
noname#2461

みんなの回答

  • 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

  • テキストファイル中の文字列の置換

    読み込んだテキストファイルに中にある文字を別の文字に置換後、置換したファイルを再度保存したいと考えています。 どのようにすれば良いのでしょうか? VB6を使用しています。 宜しくお願いします。

  • テキスト置換ツールについて

    あらかじめExcelで作成した置換表(置換前文字列、置換後文字列の一覧)に基づいて、指定したファイル群のテキストを一括置換してくれるようなツールはないでしょうか。

  • UTF-8のTextファイルの置換

    UTF-8で記述されたファイルをVBにて置換しようとしております。 置換する文字は、Tab→空白4個と"><"の間に改行を入れる置換を しようとしております。 AtEndOfStreamで読み込んで置換するのではないかと思うのですが それ以上が分かりません。 ご教授いただけないでしょうか?

  • テキストファイルの中身を自動で置換したい

    VBA初心者なので説明不足な部分があると思いますがよろしくお願い致します 現在テキストファイルを開いてCtrl+Hで検索する文字列を検索 置換後の文字列を入力し置換しているのですが ファイル数が多く1つ1つ開いて置換するのがとても面倒です Excelで開けば良いのでは?と前にご意見をいただいたのですが Excelで開いてそこからの操作がよくわからず…。 できればボタン一つで自動的に置き換えられるようにしたいのですが どのようにコードを書けば良いのかまったくわかりません。 ・指定フォルダー内にある(1つまたは複数の)テキストファイル内の文字列をすべてセルに書き出す ・セルから特定の文字(例→【 ,F1 】)を検索し、特定の文字(例→【 ,A2 】)に置換する ・上書きして保存 という感じにしたいのですができますでしょうか? 無理そうでしたら大丈夫です 閲覧いただきありがとうございました

  • 複数行のテキスト置換

    エディタを用いて複数行にまたがるテキストの置換。 下記のようなテキストがあり あああああああああああああああ いいいいい■■■■■いいいいい ううううう■■■■■ううううう えええええ■■■■■えええええ おおおおおおおおおおおおおおお      ■■■■■      ■■■■■      ■■■■■ の部分を      ●●●●●      ●●●●●      ●●●●● に置換したいです。 ただ■を●にしたいのではなく、 ■15文字を検索して ●15文字に置換したいです。 正規表現を考えたんですが思いつきませんでした。 あああああああああああああああ いいいいい■■■■■いいいいい うううう■■■■■うううううう ええええええ■■■■■ええええ おおおおおおおおおおおおおおお このような感じもヒットしそうで・・・ 列も見て検索するといいますか そのようなツール・ソフト・やり方等ございましたら ご教授よろしくお願い致します。

  • テキストファイルの一部を複数パターンで置換

    初めて質問させていただきます。 以下のようなテキストファイル(元ファイル) があります。 1行目 あいうえお 2行目 codea=aaaaa/$$ 3行目 codeb=11111*11111 4行目 … この2行目と3行目の「aaaaa」「11111」 の文字列を以下に従って置換し保存したいです。 置換パターンは、 別ファイルに一覧になっています。 bbbbb 22222 ccccc 33333 … これを、元ファイルの 「aaaaa」を「bbbbb」に、 「11111」を「22222」に置換し、 ファイル名を「bbbbb-22222.txt」として 保存するのを、 置換パターンの数だけ行う必要があります。 VBA、バッチは経験があります。得意分野ではありませんが… 申し訳ありませんが、ご教授いただけないでしょうか?

    • ベストアンサー
    • CSS
  • C言語でテキストファイルの内容を置換して保存したい

    C言語でテキストファイルを読み込んで、特定のキーワードを 見つけたら置換して、保存したいと考えています。 ネット上でテキストファイルの内容を置換して、保存するよう な情報を検索したのですが、見つからず質問することにしました。 例) hoge.txtを読みこんで、FLG=0となっている行を、FLG=1というように置換させたい。 FLG=0 ↓ FLG=1

  • Perlでのテキスト置換について

    Perlでのテキスト置換について 現在、Perlにてテキストの置換について挑戦をしておりますが、なかなかうまくいきません。pプログラマーでもないので、参考書を片手にやっておりますが、まったく進みません。 先輩方々のご知恵をお借り出来ればと思っております。 処理した内容は、別ファイルに記載されたテキスト置換一覧を実行ファイルで呼び出して、対象のテキストを置き換えるというものです。バックアップなどが出来れば、なおよいです。 理想として、複数行・正規表現を使いたいと思っております。 先輩方のご知恵を拝借できれば、うれしく思っております。

  • visual basic6.0でのテキストファイルからの読み込みについて。

    vb初心者です。 数値をテキストファイルに保存しています。その数値は、x方向に10個、y方向に3個、つまり10列3行の数値を保存しています。 そのデータを2次元配列 D(x,y)として読み込みたいのです。 for x=0 to 9, for y=0 to 2 と範囲を指定して、数値全部を読み込むときは、D(x,y)の値は正しく入っているのですが、 ある範囲だけを読み込みたいとき、たとえば for x=0 to 5, for y=0 to 1 としたとき、D(x,y)は別の数値が読み込まれてしまいます。 これは、テキストファイルの数値が配列になっていないということですよね?? どうすれば、テキストファイルの数値を2次元配列として読み込むことができるのでしょうか? 文章が解りにくくてごめんなさい!!よろしくお願いします! 

  • テキストファイルの一括置換

     テキストファイル内の数字で、 50001, 192.5410,93.1940,9.459,0.000,0.000,0.000,0.500 9,1,0 /SHIJYUN 4,0 50002, 187.3800,102.1610,3.993,0.000,0.000,0.000,0.500 9,1,0 /SHIJYUN 4,0 50003, 187.4220,108.3150,3.556,0.000,0.000,0.000,0.500 9,1,0 /SHIJYUN 4,0 50004, 193.5845,103.5750,3.490,0.000,0.000,0.000,0.500 9,1,0 の50001、50002、50003、50004~を、101、102、103、104と置換したいのですが、何かいい方法はないでしょうか。  置換できるソフトなどあれば、教えていただきたいです。お願いします。

専門家に質問してみよう