¿Cómo escribiría una macro que buscaría un símbolo específico (en Excel) y lo reemplazaría con un retorno forzado en la misma celda y mantendría la integridad de la celda?
A menudo convierto documentos de Word a Excel y, antes de realizar la conversión, reemplazo todos los retornos físicos del documento de Word con signos de libra (@@) para que la integridad de la celda se mantenga en la función de pegar en el documento de Excel (si no lo hace). eliminar las devoluciones impresas, se crea una nueva celda en cada devolución).
Después de pegar en Excel, necesito reemplazar los signos "@@" con devoluciones forzadas y no puedo encontrar "devolución forzada" como opción en "reemplazar". Creo que se necesita una macro para hacer esto.
Gracias por cualquier ayuda que usted puede dar.
Respuesta1
De hecho, puedes hacer esto con la opción buscar y reemplazar.
Cambie el texto de su celda a: ="este @@ es @@ su @@ texto de celda @@".
Luego vaya a buscar y reemplazar y reemplazar @@ (o lo que quiera reemplazar) con " & char(10) & ". Esto cambiará su salida de "este @@ es @@ su @@ texto de celda @@" a "este es el texto de su celda".
Ahora necesita formatear las celdas para habilitar el ajuste de texto (haga clic derecho > formato > pestaña de alineación > verificar ajuste de texto). Su nuevo resultado debería ser:
Este
es el texto
de su
celda
Respuesta2
Para una macro breve:
Sub DoubleAt()
Cells.Replace What:="@@", Replacement:=Chr(10)
End Sub
Respuesta3
Este fue uno de los principales resultados en Google cuando busqué "macro de Excel de texto ajustado"... así que aquí está mi solución para ajustar una celda de texto según un ancho:
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 se basa en gran medida en esta función de Andrew Poulsom que se encuentra aquí:http://www.mrexcel.com/forum/excel-questions/424309-macro-wrap-text-hard-returns.html#post2097820
Básicamente, si la cadena es más larga que el ajuste en la variable, salta hacia adelante hasta el punto de ajuste y avanza hacia atrás buscando espacios. Cuando encuentra uno, reemplaza ese espacio con una nueva línea. Luego se repite para el resto de la cuerda.
Mi versión es un poco más genérica (en mi humilde opinión).
Ejemplo:
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 ayude.