macro para substituir texto por retornos definitivos no Excel

macro para substituir texto por retornos definitivos no Excel

Como eu escreveria uma macro que buscaria um símbolo específico (no Excel) e o substituiria por um retorno rígido na mesma célula e manteria a integridade da célula?

Costumo converter documentos do Word em Excel e, antes da conversão, substituo todos os retornos físicos no documento do Word por cerquilhas (@@) para que a integridade da célula seja mantida na função de colar no documento do Excel (se você não fizer isso remover as devoluções definitivas, uma nova célula é criada a cada devolução).

Após colar no Excel, preciso substituir os sinais "@@" por retornos físicos e não consigo encontrar o "retorno rígido" como opção em "substituir". Acredito que uma macro é necessária para fazer isso.

Obrigado por qualquer ajuda que você possa dar.

Responder1

Na verdade, você pode fazer isso com a opção localizar e substituir.
Altere o texto da sua célula para: ="este @@ é @@ o texto da sua @@ célula @@".

Em seguida, vá para localizar e substituir e substituir @@ (ou o que você deseja substituir) por " & char(10) & ". Isso mudará sua saída de "este @@ é @@ seu texto @@ célula @@" para "este é o texto de sua célula".

Agora você precisa formatar as células para ativar a quebra de linha (clique com o botão direito > formatar > guia de alinhamento > verificar quebra de linha). Sua nova saída deve ser:
Este
é o texto
da sua
célula

Responder2

Para uma macro curta:

Sub DoubleAt()
    Cells.Replace What:="@@", Replacement:=Chr(10)
End Sub

Responder3

Este foi um dos maiores sucessos no Google quando pesquisei "macro de texto do Excel com quebra automática"... então aqui está minha solução para agrupar uma célula de texto com base em uma largura:

Function hardwrap(useThis As Range, WrapAt As Integer) As String
    Dim i As Integer
    Dim Temp As String
    Dim retVal As String
    i = 0
    retVal = useThis.Value
    With useThis
        If Len(.Value) > WrapAt Then
            Temp = retVal
            Do
                i = i + WrapAt
                Do
                    If Mid(Temp, i, 1) = " " Then
                        Temp = Left(Temp, i - 1) & Chr(10) & Right(Temp, Len(Temp) - i)
                        Exit Do
                    Else
                        i = i - 1
                        If i < 0 Then
                            Exit Do
                        End If
                    End If
                Loop
            Loop While i < Len(Temp) - WrapAt
            retVal = Temp
        End If
    End With
    hardwrap = retVal
End Function

Este código é fortemente baseado nesta função de Andrew Poulsom encontrada aqui:http://www.mrexcel.com/forum/excel-questions/424309-macro-wrap-text-hard-returns.html#post2097820

Basicamente, se a string for maior que a variável wrap at, ela avança até o ponto de wrap e marcha para trás em busca de espaços. Quando encontra um, substitui esse espaço por uma nova linha. Depois repete para o equilíbrio da corda.

Minha versão é um pouco mais genérica (IMHO).

Exemplo:

A1:

"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."

A2:=hardwrap(A1,40)

"Lorem ipsum dolor sit amet,
consectetur adipiscing elit, sed do
eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim
veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea
commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate
velit esse cillum dolore eu fugiat
nulla pariatur. Excepteur sint occaecat
cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est
laborum."

Espero que ajude.

informação relacionada