Macro do Word: como substituir strings em um texto, com base em uma tabela de 2 colunas?

3

Portanto, tenho uma série de sequências que gostaria de pesquisar e substituir em documentos do Word.

Minhas seqüências de caracteres seriam exibidas como uma tabela de duas colunas. Eu provavelmente criaria a tabela com o Word, então a converteria manualmente para TXT, ou CSV ou qualquer coisa que funcionasse ... Eu não preciso automatizar essa parte. A tabela seria mais ou menos assim:

English word     French word
dog     chien
cat     chat
London     Londres

Você tem a ideia ...

Eu preciso de uma macro que pesquise os termos contidos na minha primeira coluna e os substitua pelo conteúdo da segunda coluna.

Você pode ajudar? Obrigada!

    
por Paulie 08.10.2011 / 01:17

2 respostas

1

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

Crie um desses para cada palavra, mas isso não vai ler sua tabela

    
por 01.02.2012 / 17:57
1

Tomei a liberdade de pegar emprestado o fragmento de Raystafarian e expandi-lo. Você alteraria a linha filename="c:\folder\file.txt com o caminho e o nome de arquivo de um arquivo de texto simples, em que o conteúdo é uma palavra ou frase, seguido por uma guia, seguida por uma palavra ou frase, seguido por um fim de linha. Eu não me incomodei com a verificação de erros, por isso, se você não tiver um fim de linha na última linha, o texto dessa linha não será substituído. Além disso, se você não incluir uma guia em cada linha, essa macro provavelmente será interrompida. Faça o backup do seu documento do Word para facilitar a reversão.

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
    
por 01.02.2012 / 18:41