VBA Generic code

テキストを一括置換

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

サンプルコード

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

Sub All_Text_Replace() 'メイン Dim strDirPath As String Dim strExistDir As String strDirPath = Search_Directory() If Len(strDirPath) = 0 Then Exit Sub strExistDir = IsExistence_Directory(strDirPath) If Len(strExistDir) = 0 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 Function IsExistence_Directory(ByVal DirPath As String) As String 'フォルダ存在確認 IsExistence_Directory = Dir(DirPath, vbDirectory) End Function
Private Sub Search_File(ByVal strPath As String) 'フォルダ内ファイル検索 Dim strBuf As String Dim strTarget As String Dim strDirPath 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 Replace_Main(strBuf, strPath & strTarget) strTarget = Dir() Loop Until strTarget = "" End With strTarget = Dir("") End Sub
Private Sub Replace_Main(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"">"

ページトップへ戻る
Copyright(C) 2009- 坂江 保 All Rights Reserved.