トップ > 汎用コード > テキスト一括置換

テキストを一括置換2019.01.14   更新:2021.04.07

あるフォルダの複数のテキストファイル(拡張子がtxtやhtml等)の特定の文字列を、一括で置換するコードです。
HTMLファイルのタグの属性変更等の用途が考えられます。
※文字コードはUTF-8を前提としています


【お薦め】マクロ・プロシージャを管理する無料のツール!
 Excelマクロ管理ツール

サンプルコード2019.01.14   更新:2021.04.07

コードの貼り付け場所   VBAコードをカラーで印刷・Web掲載するためのツールはこちら

'2021/4/7更新
Const conBF As String = "田中" '置換前文字列
Const conAF As String = "中田" '置換後文字列
Const conTX As String = "html" 'テキストファイル種類(txt,html等)

Sub All_Text_Replace() 'メイン Dim strDirPath As String strDirPath = Search_Directory() 'フォルダの参照 If Len(strDirPath) = 0 Then Exit Sub If Dir(strDirPath, vbDirectory) = "" Then Exit Sub 'フォルダの存在確認 Call Search_File(strDirPath) End Sub
Private Function Search_Directory() As String 'フォルダの参照 With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then Search_Directory = .SelectedItems(1) End With End Function
Private Sub Search_File(ByVal strPath As String) 'フォルダ内ファイル検索 Dim strBuf As String Dim strTarget As String strPath = strPath & Application.PathSeparator strTarget = Dir(strPath & "*." & conTX) If strTarget = "" Then Exit Sub With CreateObject("ADODB.Stream") .Charset = "UTF-8" Do .Open .LoadFromFile strPath & strTarget strBuf = .ReadText 'テキスト読み込み .Close strBuf = Replace$(strBuf, conBF, conAF) '置換処理 Call Write_Text(strBuf, strPath & strTarget) 'テキスト書き込み strTarget = Dir() Loop Until strTarget = "" End With strTarget = Dir("") End Sub
Private Sub Write_Text(ByVal strText As String, ByVal strFileP As String) With CreateObject("ADODB.Stream") .Charset = "UTF-8" .Open .WriteText strText 'テキスト書き込み .SaveToFile strFileP, 2 .Close End With End Sub

「置換前文字列」 置換対象です。この文字列を検索し置換します。
「置換後文字列」 置換文字列です。この文字列に置換されます。
「テキストファイル種類」 実体がテキストファイルであれば指定可能です。(txt,html,css等)

【留意点】 置換前・置換後の文字列に「"」ダブルクォーテーションが含まれる場合は、次のように工夫する必要がある。
 例:<font>を<font color="red">に置換
 置換前文字列:"<font>"
 置換後文字列:"<font color=""red"">"


【使い方をご紹介いただいているサイト様】
 ・https://minkara.carview.co.jp/
 ・https://twitter.com/atalanta_mhxx/

ページトップへ戻る

Excel 汎用コード

Copyright(C) 2009- 坂江 保 All Rights Reserved.