[ホーム] > [VBScript FAQ 一覧] > [Excelシート上のリストを元にテキストファイルをまとめて置換する]

Excelシート上のリストを元にテキストファイルをまとめて置換する | VBScript / VBA FAQ






目的


置換リストを定義して、テキストファイルを一気に置換するサンプルプログラムを紹介します。
テキストファイルの内容を一気に置換し、かつ置換方法をExcel シートで管理するというやり方です。置換方法が多数ある場合に便利なサンプルコードとなります。

解決


Excel のシートに "list" という名前のシートを作成します。
そこに置換したいリストをA列、B列で定義します。

例:
A列,B列
本,book
鉛筆,pencil
ペン,pen

一方でこのExcelと同じフォルダに "input.txt" という名前のファイルを配置します。このファイルを置換対象とします。
以下のサンプルで Excel から ReplaceMultiLineText_Click を呼ぶことにより置換が実行されます。
置換後は"output.txt" というファイルで保存されています。

10万行レベルでも問題なく処理されます。


vbTextCompare・・大文字小文字を区別しません
vbBinaryCompare・・大文字小文字を区別します

サンプルコード



Excel で以下のマクロを作成します。このマクロをコールすると置換が実行されます。


Sub ReplaceMultiLineText_Click()
Rem Excel から呼ばれる部分
Call ReplaceMultiLineText(ThisWorkbook.Path & "\input.txt", ThisWorkbook.Path & "\output.txt")
End Sub



以下が置換を実行するマクロの本体となります。

Public Function ReplaceMultiLineText(ReadFile As String, OutputFile As String)

MsgBox ("開始します。")

Rem 変換リスト一覧が記載された Excel のシート
Rem A列に変換前の文字、B列に置換後の文字
Set list_sheet = Worksheets("list")

Set FSO = CreateObject("Scripting.FileSystemObject")

Set allContentsinTextFile = FSO.OpenTextFile(ReadFile, 1)

Rem ファイル読み取り専用で開き、一気に読み込む
buf = allContentsinTextFile.ReadAll

Rem バッファに読み込んでもう不要なので閉じてしまう
allContentsinTextFile.Close

Rem i は処理中の行
i = 1

Do While Trim(list_sheet.Cells(i, 1) <> "")
i = i + 1

Rem 変換処理を実行
buf = Replace(buf, list_sheet.Cells(i, 1), list_sheet.Cells(i, 2), , , vbTextCompare)
Loop

Rem 結果を出力
Set allContentsinTextFile = FSO.CreateTextFile(OutputFile, True)

Rem 結果を書き込み
allContentsinTextFile.Write buf
allContentsinTextFile.Close


Set allContentsinTextFile = Nothing
Set FSO = Nothing
Set list_sheet = Nothing

MsgBox ("終了します。")

End Function


サンプル========================================

================================================





[ホーム] > [VBScript FAQ 一覧]





(ご注意) 本サイト内の内容を使用して発生したいかなる時間的損害、金銭的損害あるいはいかなる損害に対して、いかなる人物も一切の責任を負いません。あくまでも個人の判断で使用してください。
本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。
このページはリンクフリーです。(このページへの直接リンクも可能です。)
雑誌等での紹介は特に連絡は不要です。
Copyright(c) tooljp.com 2007-2019