Макрос Word: Как заменить строки в тексте на основе таблицы из 2 столбцов?

Итак, у меня есть ряд строк, которые я хотел бы найти и заменить в документах Word.

мои строки будут отображаться как таблица из двух колонок. Я бы, вероятно, создал таблицу с Word, а затем конвертировал ее вручную в TXT или CSV или что-то еще... Мне не нужно автоматизировать эту часть. Таблица будет выглядеть примерно так:

English word     French word
dog     chien
cat     chat
London     Londres

вы получаете идею...

Мне нужен макрос, который ищет условия, содержащиеся в моем первом столбце, и заменяет их содержимым второго столбца.

можете ли вы помочь? Спасибо!

30
задан a CVn
13.04.2023 11:55 Количество просмотров материала 3286
Распечатать страницу

2 ответа

Selection.Find.ClearFormatting
With Selection.Find
.Text = "English Word"
.Replacement.Text = "French Word"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute

создайте один из них для каждого слова, но это не будет читать вашу таблицу

1
отвечен Raystafarian 2023-04-14 19:43

Я взял на себя смелость заимствовать фрагмент Райстафаряна и расширить его. Вы бы изменили строку filename="c:\folder\file.txt путь и имя текстового файла, где содержание слово или фразу, с последующим нажатием клавиши Tab, затем слово или фразу, затем конец строки. Я не беспокоился о проверке ошибок, поэтому, если у вас нет конца строки в последней строке, текст для этой строки не будет заменен. Кроме того, если вы не включите вкладку в каждой строке, этот макрос, вероятно, сломается. Создайте резервную копию документа word, чтобы упростить его возврат.

Sub Macro1()
    Dim ff As Long
    Dim x As Long
    Dim filename As String
    Dim buffer As String
    Dim charbuffer As String * 1

    filename = "c:\folder\file.txt"

    ff = FreeFile
    Open filename For Binary As ff
    buffer = ""
    charbuffer = ""
    For x = 1 To LOF(ff)
        Get #ff, , charbuffer
        If charbuffer <> vbCr And charbuffer <> vbLf Then
            buffer = buffer & charbuffer
        Else
            If buffer <> "" Then processBuffer buffer
            buffer = ""
        End If
    Next x
    Close ff


End Sub
Sub processBuffer(buffer As String)
    Dim varArray As Variant
    varArray = Split(buffer, vbTab)
    makeReplacements varArray(0), varArray(1)
End Sub
Sub makeReplacements(ByVal strToReplace As String, ByVal strReplacement As String)

    'MsgBox strToReplace & " will be replaced by " & strReplacement

    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = strToReplace
        .Replacement.Text = strReplacement
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = True
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
End Sub
1
отвечен horatio 2023-04-14 22:00

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх