У меня почти нулевой опыт работы с VBA, поэтому терпите меня здесь.
Я пытаюсь создать макрос, который открывает текстовый файл и находит текст, расположенный в ячейке Excel А1, и заменяет его натекст в ячейке B1.Затем он должен найти текст, расположенный в ячейке A2, и заменить его ячейкой B2, и т. Д. До последней ячейки в столбце A, содержащей данные.
Теперь я немного искал и наткнулся наэтот рабочий код:
Sub Replace_Text()
Dim strFile As String
Dim i As Integer
Dim strText As String
Dim cell As Range
With Application.FileDialog(msoFileDialogFilePicker)
.InitialFileName = ThisWorkbook.Path
If .Show <> -1 Then Exit Sub
strFile = .SelectedItems(1)
End With
i = FreeFile
strText = Space(FileLen(strFile))
With CreateObject("vbscript.regexp")
.Global = True
Open strFile For Binary Access Read Write As #i
Get #i, , strText
For Each cell In Range("A1:A" & Cells(Rows.Count, "A").End(xlUp).Row)
.Pattern = Replace(Replace(Replace(Replace(cell.Value, "?", "\?"), "*", "\*"), "+", "\+"), ".", "\.")
strText = .Replace(strText, cell.Offset(, 1).Value)
Next cell
Put #i, 1, strText
Close #i
End With
End Sub
Он работает точно так, как задумано, за исключением 1 незначительной проблемы.Кажется, что он копирует последние несколько символов в текстовом файле и добавляет его после последнего символа, делая некоторое дублирование.
Пример:
Column A | Column B
<Var1> | Patrick
<Var2> | ghosts
Перед запуском кода:
This is <Var1>.
There are <Var2>.
Some random text
После запуска кода:
This is Patrick.
There are ghosts.
Some random textom text
Последние несколько символов "om text" дублируются и выводятся как таковые.Иногда больше символов дублируется в зависимости от размера файла.Как мне это исправить?