• ベストアンサー

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

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

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

#2です。#1、#3、#4のご解答をヒントにして、 Replace関数が使えるようなので Sub main() Open "c:\my documents\abc.txt" For Input As #1 Open "c:\my documents\abc2.txt" For Output As #2 b = "名古屋" c = "名古屋北" lb = Len(b) lc = Len(c) While Not EOF(1) Line Input #1, a ns = Replace(a, b, c) Print #2, ns Wend Close #1 Close #2 End Sub を実行して同じ結果になりました。

その他の回答 (5)

noname#25230
noname#25230
回答No.6

元のファイルに書き戻すことにこだわらないのであれば、 1. 1行読み込む 2. 置換処理を行う(後述) 3. 別のファイルに書き出す を繰り返せば、置換した別のファイルが出来上がります。それを、必要であれば元のファイルを消して同じ名前に変えるなどすれば完成かと。 置換には、 1. Replace関数を使う 2. Instr関数、Mid関数などを使って置換箇所を探して置き換えていく といったところが一般的ですかね。詳しくはVBのヘルプを見てください(上記関数に関するサンプルを少し作ってみれば、すぐに分かると思います)。

  • hdump
  • ベストアンサー率27% (10/36)
回答No.4

VBがver6.0以降であればReplace ヘルプをよく読んでみてください難しいことは書いてません。 ちなみにMSDNの検索で以下の条件でヒットしたトピックは6件。Replaceはしっかり含まれていました。 『文字列 AND 置換 AND 関数』

  • MRT1452
  • ベストアンサー率42% (1392/3296)
回答No.3

ご参考になれば・・・。(対象:固定長データ) 固定長の置き換え(VBヘルプより) Mid(文字列変数, 開始位置[, 置換長]) = 置換文字列 ※詳細はヘルプを確認してください。 全角半角が混在している場合等にあると便利なルーチン Function LenCntB(ByVal str As String) as Long LenCntB = LenB(StrConv(str, vbFromUnicode)) End Function ↑ 正確な文字列のバイト数を返すルーチン

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

abc.txtの中の名古屋と言う文字列を名古屋北に置換えて abc2.txtに書き出し。 abc.txtに書き戻しは出来ないはずで、別ファイルに書き出す。 Sub main() Open "c:\my documents\abc.txt" For Input As #1 Open "c:\my documents\abc2.txt" For Output As #2 b = "名古屋" c = "名古屋北" lb = Len(b) lc = Len(c) While Not EOF(1) Line Input #1, a s = 1 ns = "" l1: p = InStr(s, a, b) If p = 0 Then GoTo e1 ns = ns & Mid(a, s, p - s) & c s = p + lb GoTo l1 e1: ns = ns & Mid(a, s, Len(a) - s + 1) Print #2, ns Wend Close #1 Close #2 End Sub (テスト例) abc.txt 大阪,a,11,12,名古屋,45,名古屋 名古屋,b,13,14,名古屋,23,名古屋 東京,c,15,16,名古屋,56,名古屋 仙台,d,123,234,福岡,87,大阪 abc2.txt 大阪,a,11,12,名古屋北,45,名古屋北 名古屋北,b,13,14,名古屋北,23,名古屋北 東京,c,15,16,名古屋北,56,名古屋北 仙台,d,123,234,福岡,87,大阪 VBAではPeplace関数を使えると思います。 VB6でも使えるかもしれませんがInstr関数でやってみました。

noname#6715
noname#6715
回答No.1

自信はありませんが Replace関数とかを使うのはいかがでしょう?

関連するQ&A

  • ファイル内の文字列を置換

    掲示板利用させていただきます。 現在、ファイル内の特定の文字列を置換し、 保存する方法を探しています。 できればスクリプト言語を利用したいと考えています。 sedコマンドを使用して文字列置換を行ったのですが 置換前と置換後のファイルで 文字コードと改行コードが変わってしまうのでダメでした; 「ファイル内の特定の文字列を任意の文字列に置換し、置換前と置換後で改行コードと文字コードを変えない方法」 をご存知の方、ご教示ください。 bash,perl,javaのどれでも結構です。 よろしくおねがいします。

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

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

  • ファイル名からテキスト内文字列の置換

    フォルダ内に tokyo.txt、nagoya.txt、osaka.txt… といったファイル名のテキストファイルがあり そのテキストファイルの中に 地名リンクという文字列があります。 この地名リンクという文字列を各々のファイル名 tokyo.txt、nagoya.txt、osaka.txt…(できれば.txtなしのtokyo,nagoya,osaka) に一括置換したいのですが、何かいい方法はありませんか。

  • バッチファイルでテキストファイル内の特定の文字列をコンピュータ名に置換

    バッチファイルでテキストファイル内の特定の文字列をコンピュータ名に置換したい バッチファイルの記述方法について教えて下さい。 テキストファイル内に特定の文字列が存在していた場合、その文字列をバッチファイルを実行するPCのコンピュータ名で置換するにはどのように記述したら良いでしょうか。 なおPCはWindowsXPを使用しています。

  • ファイルの中の文字列の置換

    htmlファイルが100個あります。 その中の特定の文字を別の文字に置換したいのですが、フォルダ単位で一気にしてくれるソフトは無いでしょうか? ご存知であれば、よろしくお願いします。

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

    同じテキストファイルの中に abcdefg,21 abcdefg,414 abcdefg,5 という文字列があった場合、 一括置換で abcdefg,0 abcdefg,0 abcdefg,0 という風にできるテキストエディタを探しています。 ご存知の方はいらっしゃいますか???

  • 複数ファイルの文字列の検索と置換

    複数ファイルの中から文字列を検索し、置換して保存をしたいです。 どのようにしたらいいでしょうか。

  • ファイル内のある文字列以降を置換

    よろしくお願いします。 OS: Windows Server 2003, MS-DOSコマンドによるバッチで、あるテキストファイル内を検索し、 ある文字列を見つけたら別のある文字列に置換する、という ものを検討中です。 findstr と for文を使用して試行錯誤していますが、 なかなかうまい方法にたどり着きません。 以前ここで教えていただいた http://okwave.jp/qa2602345.html を応用してできないか? ということについても考えているのですが、 なかなか難しいです。 具体的に置換したい文字列というのは、 Dirコマンドの結果で出力されるドライブ文字を 例えば すべてD:\ から すべてE:\ へ変更するということです。 どうぞ、アドバイスのほど、宜しくお願い致します。

  • 【コマンドプロンプト】テキストファイル内の文字列置換

    こんにちは。 コマンドプロンプトのバッチファイルでテキストファイル内の文字列の置換を行いたいと考えております。 例えば以下のような内容があった場合、 --開始-- ABCDEFG1111 ABCDEFG ABCDEFG1111 HIJKLMN --終了-- バッチファイル処理結果として 1111 ABCDEFG 1111 HIJKLMN という結果を別ファイルに出力したいのです。 制限としては、sed,awkなどのwindows上で稼動するツールがあるようですが それらは使用できません。 どなたかご存知の方教えていただけないでしょうか よろしくお願い致します。

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

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

専門家に質問してみよう