[ホーム] >
[VBScript 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