macro para substituir texto por devoluções em disco no Excel

0

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

Muitas vezes, eu converto documentos do Word em excel e, antes de converter, substituo todos os retornos difíceis no documento Word por sinais de libra (@@) para que a integridade da célula seja mantida na função de colagem do documento excel (se você não remova os retornos físicos, uma nova célula é criada em cada retorno).

Depois de colar no excel, eu preciso substituir os sinais "@@" por retornos difíceis e não consigo encontrar o "retorno difícil" como uma opção em "substituir". Eu acredito que uma macro é necessária para fazer isso.

Obrigado por qualquer ajuda que você possa dar.

    
por kathy taylor 01.07.2014 / 16:26

3 respostas

0

Você pode realmente fazer isso com a opção de localizar e substituir.
Altere o texto da sua célula para:="this @@ is @@ your @@ cell @@ text".

Em seguida, vá para encontrar e substituir e substituir @@ (ou o que você deseja substituir) por "& char (10) &". Isso mudará sua saída de "this @@ is @@ your @@ cell @@ text" para "this is your cell text".

Agora, você precisa formatar as células para ativar a quebra de linha (clique com o botão direito do mouse > format > guia de alinhamento > verifique a quebra de linha). Sua nova saída deve ser:
este é o seu
celular
texto

    
por 01.07.2014 / 16:53
0

Para uma macro curta:

Sub DoubleAt()
    Cells.Replace What:="@@", Replacement:=Chr(10)
End Sub
    
por 02.07.2014 / 05:19
0

Esse foi um dos maiores sucessos do google quando pesquisei "envoltório difícil texto excel macro" ... então aqui está minha solução para encapsular 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 é strongmente baseado nesta função por Andrew Poulsom encontrado aqui: link

Basicamente, se a string for maior que o wrap na variável, ela avança para o ponto de quebra e marcha para trás procurando por espaços. Quando encontra um, substitui esse espaço por uma nova linha. Então repete-se pelo 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.

    
por 16.06.2016 / 20:35