> 例えば、
>
> ABC
> DEF
> GHI
> というテキストファイルがあり
>
> DEFだけをJKLに書き換えるにはどうしたら良いですか?
Excelにこだわらず、Wordでやってみるのも一案かと思います。
以下は、Wordのマクロの自動記録です。
手順は
1.変換元のファイル(test.txt)を開く
2.置換で「DEF→JKL」(全置換)
3.別名で(test_p.txt)テキスト形式で保存
…以下だけは変更してあります。
[元ファイルのあるフォルダ名]
自動保存ですが、ここまで可能です。
後は、
・オプション変換オプション
・複数ファイルのループ設定
・変換後のファイルの保存先、ファイル名
などを調整してください
Sub Macro1()
'
' Macro1 Macro
'
'
ChangeFileOpenDirectory "[元ファイルのあるフォルダ名]"
Documents.Open FileName:="test.txt", ConfirmConversions:=False, ReadOnly:= _
False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _
"", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
Format:=wdOpenFormatAuto, XMLTransform:="", Encoding:=932
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "DEF"
.Replacement.Text = "JKL"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
ActiveDocument.SaveAs FileName:="test_p.txt", FileFormat:=wdFormatText, _
LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False, Encoding:=932, InsertLineBreaks:=False, AllowSubstitutions:=False, _
LineEnding:=wdCRLF
End Sub
お礼
ありがとうございます。 結局のところ、VBAでやるなら全てのテキストデータを一度配列に読み込ませた後に、 replace関数で全ての文字列を置換後に再度テキストデータとして 出力するしかないということでしょうか? grepのソフトウェアはあるのですが これらのソフトも同じように一度配列に書き出す方法をとっているのでしょうか?
補足
これであっていますか? もっと良い方法があれば教えてください。 Sub test78() Dim FSO As Object, buf As String Set FSO = CreateObject("Scripting.FileSystemObject") ''C:\Work\Sample.txtの全ての文字を読み込んで表示します With FSO.GetFile("d:\新しいテキスト ドキュメント.txt").OpenAsTextStream buf = .ReadAll buf = Replace(buf, "コリアン", "ジャパニーズ") .Close End With Set FSO = Nothing StrPath = "D:\test.txt" Open StrPath For Output As #1 Print #1, buf Close #1 End Sub