none
Localizar e Substituir Várias Frases RRS feed

  • Pergunta

  • Prezados:

    Solicito informações se seria possível uma macro localizar e substituir frases.

    Exemplo:

    Aos quatro de Il quattro 
    Aos quinze de Il giorno quindici 
    Aos sete de Il giorno sette
    Aos treze de Il tredici 

    Observe que minha lista tem mais de 10.000 linhas, o que torna impossível inseri-las uma a uma na autocorreção ou no dicionário,  sendo que gostaria de substituir no documento WORD o conteúdo da coluna A pelo conteúdo da coluna B.

    Agradeço muito que puder me ajudar.

    Adriano


    • Editado AdrianoPires sábado, 15 de fevereiro de 2014 01:08
    quinta-feira, 13 de fevereiro de 2014 18:37

Respostas

  • Creio que ele não consiga "pegar" a formatação do excel (isto no meu pequeno entendimento sobre Office), mas tem como você definir qual formatação ele vai colar no word, então você pode pegar as informações de formatação que está no excel e definir na macro coloquei como cor vermelho, fonte 16 e negrito só para teste, você deverá informar qual formatação que quer no word.

    Vou inserir o código completo:

    Sub fSubstituir()
      Dim appExcel As Object 'Excel.Application
      Dim wkb As Object 'Excel.Workbook
      Dim wks As Object 'Excel.Worksheet
      Dim lngRow As Long
      Dim fnd As Word.Find
      
      'Mude os valores abaixo para corresponder sua pasta de trabalho
      Set appExcel = GetObject(, "Excel.Application")
      Set wkb = appExcel.Workbooks("Pasta1.xlsx")
      Set wks = wkb.Worksheets("Plan1")
      
      Selection.HomeKey Unit:=wdStory
      Set fnd = Selection.Find
      lngRow = 2
      
      
      Do While wks.Cells(lngRow, "A").Value <> ""
        fnd.Text = wks.Cells(lngRow, "A").Value
        fnd.Replacement.Text = wks.Cells(lngRow, "B").Value
    
    'Mude as configurações do formato do texto
    
        With fnd.Replacement.Font 
            .Size = 16
            .Bold = True
            .Color = wdColorRed
        End With
    
        fnd.Execute Replace:=wdReplaceAll
        lngRow = lngRow + 1
      Loop
    End Sub

    flw

    segunda-feira, 24 de fevereiro de 2014 20:55

Todas as Respostas

  • Seriam só estas 4 ocasiões?

    Se sim, salve a macro e coloque em um botão.

    Sub Macro1()
    
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "Aos quatro de"
            .Replacement.Text = "Il quattro"
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
        
           Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "Aos quinze de"
            .Replacement.Text = "Il giorno quindici"
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
        
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "Aos sete de"
            .Replacement.Text = "Il giorno sette"
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
        
        Selection.Find.Replacement.ClearFormatting
        With Selection.Find
            .Text = "Aos treze de"
            .Replacement.Text = "Il tredici"
        End With
        Selection.Find.Execute Replace:=wdReplaceAll
        
    End Sub

    quinta-feira, 13 de fevereiro de 2014 21:50
  • Sua lista está em qual formato? Excel?

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sexta-feira, 14 de fevereiro de 2014 00:42
    Moderador
  • Agradeço a atenção dos amigos Bruno e Felipe.

    Minha lista não são só estas quatro ocasiões, como disse, são 10,000.

    Quanto ao formato, está em excel, mas acho que poderia ser transformada em word ou txt.

    Grato pela atenção

    Adriano

    sábado, 15 de fevereiro de 2014 01:11
  • Agradeço a atenção dos amigos Bruno e Felipe.

    Minha lista não são só estas quatro ocasiões, como disse, são 10,000.

    Quanto ao formato, está em excel, mas acho que poderia ser transformada em word ou txt.

    Grato pela atenção

    Adriano

    sábado, 15 de fevereiro de 2014 01:11
  • Agradeço a atenção dos amigos Bruno e Felipe.

    Minha lista não são só estas quatro ocasiões, como disse, são 10,000.

    Quanto ao formato, está em excel, mas acho que poderia ser transformada em word ou txt.

    Grato pela atenção

    Adriano

    sábado, 15 de fevereiro de 2014 01:11
  • Então você quer que o excel traduza tudo do português para o italiano, sozinho?

    Se for este o caso, acho melhor você arrumar um programa tradutor.

    sábado, 15 de fevereiro de 2014 01:28
  • Estou considerando que as palavras em italiano estão na coluna A, e as em português na coluna B, e que os dados começam a partir da linha 2.

    Para usar a macro a seguir, a Pasta de Trabalho deve estar aberta. A macro deve ser colada e executada num módulo do Word, e o documento ativo deve ser um dos que deseja traduzir:

    Sub fSubstituir()
      Dim appExcel As Object 'Excel.Application
      Dim wkb As Object 'Excel.Workbook
      Dim wks As Object 'Excel.Worksheet
      Dim lngRow As Long
      Dim fnd As Word.Find
      
      'Mude os valores abaixo para corresponder sua pasta de trabalho
      Set appExcel = GetObject(, "Excel.Application")
      Set wkb = appExcel.Workbooks("Pasta1")
      Set wks = wkb.Worksheets("Plan1")
      
      Selection.HomeKey Unit:=wdStory
      Set fnd = Selection.Find
      lngRow = 2
      Do While wks.Cells(lngRow, "A").Value <> ""
        fnd.Text = wks.Cells(lngRow, "A").Value
        fnd.Replacement.Text = wks.Cells(lngRow, "B").Value
        fnd.Execute Replace:=wdReplaceAll
        lngRow = lngRow + 1
      Loop
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    sábado, 15 de fevereiro de 2014 22:15
    Moderador
  • Olá Felipe,

    Agradeço muito sua atenção e ajuda.

    Mas não está dando certo, fiz o que disse mas ao executar a macro aparece a mensagem "Subscrito fora do intervalo".

    O que posso estar fazendo de errado?

    Grato

    Adriano

    segunda-feira, 17 de fevereiro de 2014 18:29
  • Como o Benzadeus disse, ele SUPOS que a sua pasta de trabalho chamava PASTA1 e a  planilha chamava Plan1, e que as colunas preenchidas são a coluna A e B, caso qualquer uma dessas ocorrências sejam diferentes da sua pasta de trabalho poderá ocorrer este erro, por isso falo sempre que a melhor forma de pedir ajuda é anexando a planilha em questão.

    Informe qual o nome da pasta de trabalho, da planilha e quais as colunas preenchidas com portgues e italiano.

    Falou.

    segunda-feira, 17 de fevereiro de 2014 19:09
  • Bruno,

    Fiz justamente isso.

    Nome do arquivo: Pasta1.slsx

    Nome da planilha: Plan1

    Coluna A: italiano

    Coluna B: português

    Como ele disse também, deixei o arquivo excel aberto e a planilha começa na linha 2.

    Mas apresenta este erro.

    Como posso anexar minha planilha?

    Grato

    Adriano


    • Editado AdrianoPires segunda-feira, 17 de fevereiro de 2014 19:43
    segunda-feira, 17 de fevereiro de 2014 19:40
  • Consegui fazer a depuração aqui com um teste, quando fizer o teste da macro, primeio salve o arquivo PASTA1 e no código postado pelo Benzadeus, nesta linha faltou a extensão:

    troque esse

     Set wkb = appExcel.Workbooks("Pasta1")

    por este

     Set wkb = appExcel.Workbooks("Pasta1.xlsx")

    Testei aqui e rodou supimpa!!!

    (só agora que entendi que você queria que era fezer uma base de dados no excel e usar no word!)

    segunda-feira, 17 de fevereiro de 2014 20:29
  • Agora sim,

    Rodou redonda.

    Agradeço a todos que ajudaram.

    Grato

    Adriano

    segunda-feira, 17 de fevereiro de 2014 20:50
  • Aos amigos mais um pedido de ajuda.

    Na minha planilha, o texto está escrito em vermelho.

    Quando a macro faz a substituição, ela se dá em preto.

    Seria possível manter a formatação de tamanho de letra, cor e etc, utilizado no excel?

    Grato

    Adriano

    segunda-feira, 24 de fevereiro de 2014 20:06
  • Creio que ele não consiga "pegar" a formatação do excel (isto no meu pequeno entendimento sobre Office), mas tem como você definir qual formatação ele vai colar no word, então você pode pegar as informações de formatação que está no excel e definir na macro coloquei como cor vermelho, fonte 16 e negrito só para teste, você deverá informar qual formatação que quer no word.

    Vou inserir o código completo:

    Sub fSubstituir()
      Dim appExcel As Object 'Excel.Application
      Dim wkb As Object 'Excel.Workbook
      Dim wks As Object 'Excel.Worksheet
      Dim lngRow As Long
      Dim fnd As Word.Find
      
      'Mude os valores abaixo para corresponder sua pasta de trabalho
      Set appExcel = GetObject(, "Excel.Application")
      Set wkb = appExcel.Workbooks("Pasta1.xlsx")
      Set wks = wkb.Worksheets("Plan1")
      
      Selection.HomeKey Unit:=wdStory
      Set fnd = Selection.Find
      lngRow = 2
      
      
      Do While wks.Cells(lngRow, "A").Value <> ""
        fnd.Text = wks.Cells(lngRow, "A").Value
        fnd.Replacement.Text = wks.Cells(lngRow, "B").Value
    
    'Mude as configurações do formato do texto
    
        With fnd.Replacement.Font 
            .Size = 16
            .Bold = True
            .Color = wdColorRed
        End With
    
        fnd.Execute Replace:=wdReplaceAll
        lngRow = lngRow + 1
      Loop
    End Sub

    flw

    segunda-feira, 24 de fevereiro de 2014 20:55
  • Olá Bruno,

    Isso mesmo que queria.

    Muito obrigado.

    Adriano

    segunda-feira, 24 de fevereiro de 2014 21:20