VBA: cómo eliminar solo la SEGUNDA aparición de un carácter (en cada celda de una tabla de documentos de Word)

(He buscado ávidamente en el foro, pero las únicas preguntas similares de 'reemplazo' que pude encontrar estaban relacionadas con Python, Java, etc., y no con VBA)

  • Tengo una tabla dentro de un documento de MS Word (2010) (tiene dos columnas pero solo la segunda columna tiene texto)
  • Algunas celdas en la segunda columna tienen una línea de texto y SIN marca de párrafo
  • Otras celdas en la segunda columna tienen dos líneas de texto y DOS marcas de párrafo (^p)
  • No existe un patrón regular entre estos dos tipos de células.
  • donde hay un segundo marca de párrafo, esto siempre ocurre directamente antes del marcador de final de celda

Realmente necesito una macro para eliminar (reemplazar con " ") esto segundo (=final) marca de párrafo de cada celda donde ocurre, pero para ignorar cualquier marca de primer párrafo dentro de las celdas.

Estaría extremadamente agradecido si alguien tiene el tiempo y la inclinación para ayudarme con esta macro. Como habrás adivinado, tengo poca experiencia en VBA a pesar de intentar darme un curso intensivo: estoy más acostumbrado a grabar macros, lo cual no es una opción en este caso más complejo.

Mis esperanzas aumentaron cuando Google me encontró esto, que parece que podría ser adaptable http://www.vbaexpress.com/kb/getarticle.php?kb_id=334; pero no tengo idea de cómo modificarlo para reemplazar solo una SEGUNDA (/ final) aparición de ^p.

Gracias de antemano.

preguntado el 28 de agosto de 12 a las 11:08

1 Respuestas

Qué tal si:

Dim tbl As Table
Dim c As Cell


For Each tbl In ActiveDocument.Tables
    For Each c In tbl.Columns(2).Cells
        'The end of a cell without a carriage return is vbCr & Chr(7)
        If Right(c.Range.Text, 3) = vbCr & vbCr & Chr(7) Then
            c.Range.Text = Mid(c.Range.Text, 1, Len(c.Range.Text) - 3) & Chr(7)
        End If
    Next
Next

Respondido 28 ago 12, 16:08

En primer lugar, ¡GRACIAS! Estoy mucho más cerca ahora que ayer. El problema ahora es que estoy perdiendo todo el formato en las celdas macro-ed (el formato varía entre diferentes líneas de la misma celda), y me doy cuenta de que esto se debe a que estamos eliminando el marcador de fin de celda. ¿Existe de todos modos, en lugar de eliminar los últimos 3 caracteres [Len(c.Range.Text) - 3], podemos eliminar el penúltimo solo personaje? (la longitud del texto de la celda varía...) Muchas gracias de nuevo. (He investigado en el foro/google y no puedo encontrar nada sólido). - Beck0York

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.