テキストファイルを自動で置換する方法
- VBA初心者でもテキストファイルの置換作業を効率化する方法をご紹介します。
- Excelを使ってテキストファイルの内容を一括で置換する方法を解説します。
- 指定フォルダ内のテキストファイルを自動的に置換するVBAコードの作り方をご紹介します。
- ベストアンサー
テキストファイルの中身を自動で置換したい
VBA初心者なので説明不足な部分があると思いますがよろしくお願い致します 現在テキストファイルを開いてCtrl+Hで検索する文字列を検索 置換後の文字列を入力し置換しているのですが ファイル数が多く1つ1つ開いて置換するのがとても面倒です Excelで開けば良いのでは?と前にご意見をいただいたのですが Excelで開いてそこからの操作がよくわからず…。 できればボタン一つで自動的に置き換えられるようにしたいのですが どのようにコードを書けば良いのかまったくわかりません。 ・指定フォルダー内にある(1つまたは複数の)テキストファイル内の文字列をすべてセルに書き出す ・セルから特定の文字(例→【 ,F1 】)を検索し、特定の文字(例→【 ,A2 】)に置換する ・上書きして保存 という感じにしたいのですができますでしょうか? 無理そうでしたら大丈夫です 閲覧いただきありがとうございました
- Post-P
- お礼率75% (6/8)
- Visual Basic
- 回答数5
- ありがとう数4
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
VBA です ①対象は A フォルダの中の全テキストファイルが対象なのか、 B フォルダの中からテキストファイルを選択するのか ②変換したい文字は A 複数 B 1つだけ ③文字コードは A ANSI(シフトジス) B それ以外。 取りあえず、A で作りました。 画像の様に B1、入力フォルダ B2、出力フォルダ A5以下、痴漢前の文字 B4以下、痴漢後の文字 を入力して実行して下さい。 ※必ず文字コードを確認して下さい。文字コードはメモ帳で開いて、ファイル、名前を付けて保存の画面を出せば、下の方に出てきます。ANSI以外だったら文字化けします。 \ はコピペすると半角¥になります。 Option Explicit ' Sub Macro1() Dim FileName As Variant Dim RInp As Long Dim Find As String Dim Repl As String Dim FileData As String ' FileName = Dir([B1] & "\*.txt") If FileName = "" Then MsgBox "該当ファイルがありません", vbCritical End If ' On Error Resume Next MkDir [B2] On Error GoTo 0 ' Do While FileName > "" Open [B1] & "\" & FileName For Input As #1 Open [B2] & "\" & FileName For Output As #2 ' Do Until EOF(1) Line Input #1, FileData ' For RInp = 5 To Cells(Rows.Count, "A").End(xlUp).Row Find = Cells(RInp, "A") Repl = Cells(RInp, "B") FileData = Replace(FileData, Find, Repl) Next RInp Print #2, FileData Loop Close FileName = Dir Loop MsgBox "終了しました" End Sub ①~③を変身して下さい。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17068)
自動で、とか、対象が多数で面倒というなら、色々言わず、質問文に、「プログラムでやりたい」、と率直に書くべきだ。それ以外は既製ソフトを使うしかないが、簡単には見つからないものだ。 >VBA初心者なので説明不足な部分・・ 別の問題だろう。やりたいことを、過不足なく表現する技術こそ、コード作成以上に 人生で大切と思う。個人的に、これの訓練をしてないような質問者が多いと思う。 ファイル名やレコードの内容の、模擬実例を、質問するなら、少数例あげるべきだと思う。 >ファイル数が多く であれば、ファイルパスの(文字列です)リストを持つか、または同一フォルダー内にそれら対象のファイルに集めて、処理の繰り返しに持ち込むことになろう。 ーー こういうのは、FSOを使うのがよいでしょう。 (1)VBAとの親和性 (2)テキストファイルのレコード的に、Read,Writeができる (3)置換かVBAコードで出来る (4)For Eachがファイル内のファイル補足に使える。 (5)WEBで、解説記事が多い。 参考に 標準モジュールに Sub test01() '参考WEB記事 'http://officetanaka.net/excel/vba/filesystemobject/filesystemobject25.htm 'http://www2.tokai.or.jp/mother/newhtm2/acvba/av09/av005.htm '--- Set FSO = CreateObject("Scripting.FileSystemObject") 'テキストストリームオブジェクトの取得(読み込みモード) 'ーーーインプット・ファイルパス strPath = "C:\Users\惇\ドキュメント\Documents\テスト5.txt" Set tso = FSO.OpenTextFile(strPath) '---アウトプット・ファイルパス ofilename = "C:\Users\惇\ドキュメント\Documents\テスト7.txt" Set outTxt = FSO.CreateTextFile(ofilename, True) 'ーーー With tso Do Until .AtEndOfStream 'ファイル末尾まで繰り返し 'イミディエイトウィンドウへ読み込み位置と値を表示 buf = .Readline MsgBox buf '---置換 2箇所置換の例。置換箇所が、多い場合は重ねを増やせる。 repAfter = Replace(buf, "府中市", "稲城市") repAfter = Replace(repAfter, "東灘区", "灘区") MsgBox repAfter outTxt.Write repAfter Loop '-------ファイルクーロズ tso.Close 'ファイルのクローズ outTxt.Close 'ファイルのクローズ End With End Sub 小生は、テスト不十分なので、少数例でテストからはじめてください。 多数のファイルやレコード数になったら、Msgbox行は削除のこと。Debug.printでやるとか。
お礼
ご回答いただきありがとうございます たしかに自動などと書かず率直に書くべきでした 貴重なご意見と解決策を明記していただきありがとうございました
- M_Sato
- ベストアンサー率54% (550/1003)
ストリームエディターというテキストファイルを読み込んで加工するソフトがあります。 Vectorのサイトで探せばいろいろなバージョンがありますが、とりあえず「Sed LOGOS版」でいいと思います。 これを解凍してsed.exeをC:¥のルートドライブにおいておきます。 次に置換するためのバッチファイルを、指定フォルダ内に作ります。 手順は、以下のように記述をしたテキストファイルを作り、その拡張子を.txtから.batに変えるだけです。 ここでは対象ファイル名をfileA.txt、fileB.txtとしています。 ------------------------------- C:\sed -e "s/【 ,F1 】/【 ,A2 】/g" fileA.txt > fileA2.txt C:\sed -e "s/【 ,F1 】/【 ,A2 】/g" fileB.txt > fileB2.txt (以下、指定フォルダ内の対象ファイルすべてを記述) ------------------------------- このバッチファイルをクリックすれば、すべてのファイルが一瞬で置換されます。 (上の記述で「C:」のあとに逆スラッシュが表示されていたら半角の¥と読み替えてください)
お礼
ご回答いただきありがとうございます フリーソフトなどを使用できない環境下という補足を忘れておりました 調べていただいたのに大変申し訳ございません ありがとうございました
- Ultra-Hetare
- ベストアンサー率38% (204/526)
セルを介する必要はないですよ。 テキストを読み込んで、 メモリ内で置換し、 それを別のテキストに書き出せば 一丁上がりです。 参考サイト https://kenko-keep.com/vba-cnv-file/ よく読んで頑張って下さい。
お礼
ご回答いただきありがとうございます 理解できるかわかりませんがゆっくり読んで挑戦してみます
関連するQ&A
- エクセル 置換後の文字列について
エクセル2003です 置換後の文字列について質問させてください 特定のセルに文字を入力し 例 C100に(9月)等 検索と置換にて 置換後の文字列を C100のテキストに 置換したいのですが 入力時にC100を選択する方法がわかりません よろしくお願い致します
- ベストアンサー
- オフィス系ソフト
- いっぱいあるテキストファイルの中身を置換したい
テキスト内容の置換について正規表現を用いた場合について?どなたか教えてください。 テキストが100個くらいあるので「Greplace」を使っています。他にいい方法があればソフトは使いませんが・・・ <br> テキストの中身はだいたい300行くらいです。 中身は例として下記のような感じです。 A111_selection_TXCDISU・・・・・・・・・・・・ B222_boot_TXCDISU・・・・・・・・・・・・ C333_DDcommand_TXCDISU・・・・・・・・・・・・ A234_Xmensanjo_TXCDISU・・・・・・・・・・・・ ・ ・ ・ ・ ・ やりたいことは特定のキーワードをor検索をしてそのキーワードが“ない”行だけを別の文字に置換したいんです。 キーワードが多く50ワードくらいあります。 A111|B222|C333と区切って検索は出来るのですがこれを含む列は置換せずその他を置換したいのですがどうしたらよいのでしょうか? 欲しい結果は下記のようにです。 A111|B222|C333を含む行以外をmoeyanで置換 A111_selection_TXCDISU・・・・・・・・・・・・ B222_boot_TXCDISU・・・・・・・・・・・・ C333_DDcommand_TXCDISU・・・・・・・・・・・・ A234_moeyan_TXCDISU・・・・・・・・・・・・ ・ ・ ・ ・ ・
- ベストアンサー
- Windows系OS
- VBA(Excel)でファイル内の文字を置換したいのですが
いつも拝見させていただいております。 初めて質問させていただきます。 現在VBAに興味を持ち始めて独学で学んでおり、 VBAでテキストファイルの文字を置換できないかと思っております。 事例としては以下のような例を考えています。 ・エクセルマクロ実行時に置換する/したい文字を入力 ・対象ファイルを指定 ・対象ファイル内(テキスト)にて文字を検索し、ヒットしたら置換 まだVBAを熟知していないので、出来るのかどうかもわかりませんが 可能であれば、教えて頂きたいと思います。宜しくお願いします
- 締切済み
- その他(プログラミング・開発)
- テキスト置換ツールについて
あらかじめExcelで作成した置換表(置換前文字列、置換後文字列の一覧)に基づいて、指定したファイル群のテキストを一括置換してくれるようなツールはないでしょうか。
- ベストアンサー
- その他(業務ソフトウェア)
- テキストファイルを直接置換する方法
VBAに関する質問です。 複数のテキストファイルを読み込んで 指定した文字列を別の文字列に検索・置換してくれるプログラムを作りたいと考えています。 これをするためには一度 Set MyTxt = FSO.OpenTextFile(StrPath, 1) Do While MyTxt.AtEndOfStream = False hairetu(xxx) = MyTxt.ReadLine loop のようにしてテキストデータを全て配列に読み込み、 Replace関数で一つずつ検索・置換した後に Open StrPath For Output As #1 Print #1, hairetu(xxx) のようにしてファイルを出力し直すしかないですか? 配列に読み込まずに 既存のファイルを直接編集する方法を教えてください。
- ベストアンサー
- Visual Basic
- エクセル2003での置換について教えてください。
エクセル2003での置換について教えてください。 こんにちは いつもお世話になっています エクセル2003での置換について教えてください。 特定の文字列以降の文字列を(特定文字列自身も含めて)削除したいのです。 特定の文字列は二つあります。【@】と【変化】です(【】も含みます)。 この二つの文字列はバラバラに出てきます。一方だけがでてくるセル、両方出てくるセル、両方出てこないセル、があるという意味です。 「*」を各特定文字の後ろに付けて、置換機能で削除していますが、二つの文字列に対して別々にやっています。 これを一度で置換して削除する方法を教えてください。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- ファイル内の文字列を置換
掲示板利用させていただきます。 現在、ファイル内の特定の文字列を置換し、 保存する方法を探しています。 できればスクリプト言語を利用したいと考えています。 sedコマンドを使用して文字列置換を行ったのですが 置換前と置換後のファイルで 文字コードと改行コードが変わってしまうのでダメでした; 「ファイル内の特定の文字列を任意の文字列に置換し、置換前と置換後で改行コードと文字コードを変えない方法」 をご存知の方、ご教示ください。 bash,perl,javaのどれでも結構です。 よろしくおねがいします。
- 締切済み
- その他(プログラミング・開発)
- テキスト置換なのですが
テキストドキュメントの中の文字列をあいまいに検索して置換できるソフトなどはないのでしょうか? 例えば検索条件を aaabbb****ccc として(*はすべての文字列)として、検索し、それを aaabbbxxxxccc など置換するといったことがしたいのです。 かなり調べてみましたが、分かりませんでした。(もしかするとものすごく初歩が分かっていないのかもです)よろしくお願いします。
- ベストアンサー
- フリーウェア・フリーソフト
- テキストエディタでの置換(正規表現チェック済)と同様のことを
テキストエディタでの置換(正規表現チェック済)と同様のことを エクセルのマクロでもしたい。 画像を添付しましたが、秀丸で置換を選択し、 検索文字列と置換文字列を入れて、正規表現チェックのチェックボックスを 選択した状態で実行するのと同様のことをエクセルのマクロで行いたいです。 正規表現混みだととても難しいです。 やりたいことはマクロで、フォルダ内のテキストファイルを置換をかけていきたいです。(テキストファイルは複数ある状態)そのテキストファイルを更新できればいいです。(別テキストで出力されてもいいです。) どなたか詳しい方、教えていただけませんでしょうか? よろしくお願いいたします。 --- 検索エディタ【秀丸】【置換】 検索【.*item1=(.*) item2=(.*) .*】 置換【\1\t\2】 正規表現チェック
- ベストアンサー
- Visual Basic
- 複数のテキストファイルの一括置換について
複数のテキストファイルの一括置換について 複数のテキストファイル(html)の中にある 【地域名】という文字列を一括でそれぞれA、B、C・・・・という風に異なる文字列に変換したいです。 たとえば 001/index.html の中にある【地域名】は北海道 に変換 002/index.html の中にある【地域名】は青森 に変換 ・ ・ ・ 変換前の文字列は同一ですが、変換後の文字列を全ファイル異なるものにしたいので秀丸等の一括置換ができずに困っています。 全ファイル開いて1つ1つ検索置換していくには2000ファイルほどあるので大変なので何かいい案はないでしょうか? よろしくお願いいたします。
- 締切済み
- その他(ソフトウェア)
お礼
①A ②A ③A(右下ANSIでした) 先程動作確認を行い無事置換することができました 率直な質問内容でなかったにも関わらず貴重なお時間を割いて このような素晴らしいプログラムを作っていただきありがとうございました