[FAQ CENTER トップ]
[VBScript FAQ トップへ]

VBScript / VBA FAQ


スポンサード リンク

【質問】 Excelシート上のリストを元にテキストファイルをまとめて置換する

スポンサード リンク

【答え】
置換リストを定義して、テキストファイルを一気に置換するサンプルプログラムを紹介します。

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

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

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

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

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

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), , , vbBinaryCompare)
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 トップへ]
[FAQ CENTER トップ]





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