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

0

Como eu iria escrever uma macro que procuraria por um símbolo específico (no Excel) e substituí-lo por um retorno difícil na mesma célula e manter a integridade da célula?

Costumo converter documentos do Word em Excel e antes de converter, eu substituo todos os retornos difíceis no documento do Word com sinais de libra (@@) para que a integridade da célula é mantida na função colar no documento Excel (se você não fizer isso remover os retornos físicos, uma nova célula é criada em cada retorno).

Depois da pasta no excel, eu preciso substituir os sinais "@@" por hard returns e não consigo encontrar o "hard return" como opção em "replace". Eu acredito que uma macro é necessária para fazer isso.

Obrigado por qualquer ajuda que você possa dar.

kathy taylor
fonte

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 localizar e substituir e substituir @@ (ou o que você deseja substituir) por "& amp; char (10) & amp;". 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 & gt; format & gt; guia de alinhamento & gt; verifique a quebra de linha). Sua nova saída deve ser:
este
é
seu
célula
texto

slow_excellence
fonte
0

Para uma macro curta:

Sub DoubleAt()
    Cells.Replace What:="@@", Replacement:=Chr(10)
End Sub
Gary's Student
fonte
0

Esse foi um dos maiores sucessos do google quando pesquisei "hard wrap text excel macro" ... então aqui está a minha solução para envolver uma célula de texto baseada 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 por Andrew Poulsom encontrado aqui: http://www.mrexcel.com/forum/excel-questions/424309-macro-wrap-text-hard-returns.html#post2097820

Basicamente, se a string for maior que o wrap na variável, ela pula para frente até 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.

phyatt
fonte