【VBA】テキストファイル内の文字列を置換する

VBAで
 ・テキストファイル内の文字列を置換
できます!

VBAから
 ・Power Shellのコマンドレットを実行
することで実現します!
※演算子「-creplace」等により実現します。

PR

VBAコード

ここでは例として、
 ・デスクトップ配下のテキストファイル「sample.txt」内の
 ・文字列「(株)」を「株式会社」へ置換
します。

テキストファイル「sample.txt」
テキストファイル「sample.txt」
テキストファイル「sample.txt」の内容
テキストファイル「sample.txt」の内容

テキストファイルだけでなく、CSVファイルでも置換できます。

Option Explicit

Sub sample()
    
    Dim targetFile As String
    Dim beforeStr As String
    Dim afterStr As String
    Dim psCommand As String
    Dim wsh As Object
    Dim result As Integer
    
    '対象ファイル
    targetFile = "C:\Users\user\Desktop\sample.txt"
    '置換前文字列
    beforeStr = "\(株\)"
    '置換後文字列
    afterStr = "株式会社"
    
    'PowerShellのコマンドレットを組み立て
    psCommand = "powershell -NoProfile -ExecutionPolicy Unrestricted "
    psCommand = psCommand & "(Get-Content " & targetFile & ") -creplace " & "'" & beforeStr & "'" & "," & "'" & afterStr & "'"
    psCommand = psCommand & " | Out-File -Encoding default " & targetFile
    
    Set wsh = CreateObject("WScript.Shell")
    
    'PowerShellのコマンドレットを実行
    result = wsh.Run(Command:=psCommand, WindowStyle:=0, WaitOnReturn:=True)
    
    If (result = 0) Then
        MsgBox ("置換が正常終了しました。")
    Else
        MsgBox ("置換が異常終了しました。")
    End If
    
    '後片付け
    Set wsh = Nothing
    
End Sub

以下を指定します。
※状況に応じて任意の値を指定してください。

・対象ファイル(13行目)
・置換文字列(15行目) ※「(」は記号のため「\によりエスケープしています。
・置換文字列(17行目)

実行するPower Shellのコマンドレットを組み立てます(20~23行目)。
※コマンドレット「Get-Content」と演算子「-creplace」により置換をします。
※演算子「-creplace」による置換は、大文字小文字の区別します
大文字小文字の区別したくない場合は、演算子「-replace」を使用します。
※コマンドレット「Out-File」により、置換後の内容を対象ファイルへ書き込みます。
※文字化けしないように、オプション「-Encoding default」を付けます。

PR

実行結果

テキストファイル内の文字列を置換できました。
※文字列「(株)」を「株式会社」へ置換できました。

実行結果①
実行結果①
実行結果②
実行結果②
PR

参考①

上記のVBAコードは以下の記事を参考にして作成しました。

PR

参考②

Excelファイル内の文字列の置換もできます。

詳細は以下の記事をご確認ください。

PR

参考③

上記で使用した以下の詳細は、公式サイトをご確認ください。

●Power Shellのコマンドレット「Get-Content」


●Power Shellの演算子「-creplace」


●Power Shellのコマンドレット「Out-File」