** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Word
  Mensajes nuevos Mensajes nuevos RSS - Texto resaltado
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoTexto resaltado

 Responder Responder
Autor
Mensaje
Trancos Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 11/Enero/2018
Localización: Zaragoza
Estado: Sin conexión
Puntos: 9
Enlace directo a este mensaje Tema: Texto resaltado
    Enviado: 25/Enero/2018 a las 07:30

Buenas a todos.

Estoy haciendo una macro en VBA Word para que coja texto de un archivo excel y lo pegue en otro archivo word.

Por simplificar, digamos que cojo el contenido de las celdas A1, B1 y C1 de la excel, y pego el contenido de A1 en un párrafo y B1 en otro párrafo (este he de resaltarlo o no resaltarlo, en función del contenido de la celda C1). 

Tengo todo resuelto excepto el resaltado, que parece funcionar extrañamente, ya que cuando pego un párrafo y lo resalto, ya se me quedan resaltados todos los siguientes. Es como si fuera un interruptor que enciendo y luego ya no se apaga.

La pregunta es ¿sería posible "activar" el resaltado en un momento dado para pegar texto resaltado y luego "desactivarlo" para seguir pegando texto normal?

Gracias de antemano.

Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 2944
Enlace directo a este mensaje Enviado: 25/Enero/2018 a las 10:05
Hola.
¿Puedes poner la parte de código que hace referencia al texto resaltado?
Ya comentas.
Un saludo a todos
Arriba
Trancos Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 11/Enero/2018
Localización: Zaragoza
Estado: Sin conexión
Puntos: 9
Enlace directo a este mensaje Enviado: 25/Enero/2018 a las 20:46
Hola, os pongo la parte de código.

        Selection.TypeText Text:=vContenido(vFila, 9)
        If vContenido(vFila, 3) = 3 Then
                Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
                Options.DefaultHighlightColorIndex = wdYellow
                Selection.Range.HighlightColorIndex = wdYellow

Explico un poco:
vContenido es un array que me traigo de la excel (un rango de excel que he copiado al array).
Tengo que pegar el contenido del array, pero solo algunas columnas (en este caso columna 9).
Y lo tengo que pegar resaltado solamente en el caso de que la columna 3 del array sea un 3.
De ahí que esté dentro del If.
¿Cómo lo hago? Pues pego el párrafo y si se cumple la condición columna 3 = 3, selecciono el párrafo y aplico el resaltado (las tres últimas líneas).
Es aquí donde me gustaría "desactivar", por decirlo así, el resaltado, ya que luego la macro continúa pegando más párrafos y evaluando la condición (bueno, en realidad los pega todos resaltados ya, y ese es el fallo).
Espero no haberme enrollado mucho y que se entienda.
Saludos Shocked

Edito: todo eso para cada fila del array, lógicamente, aunque no se vea, todo está dentro de un bucle.


Editado por Trancos - 25/Enero/2018 a las 20:52
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 2944
Enlace directo a este mensaje Enviado: 25/Enero/2018 a las 23:34
Hola.
Prueba quitando el realce de los párrafos insertados/seleccionados que no lo necesiten, o sea:

Selection.Range.HighlightColorIndex = wdNoHighlight

Espero que ayude a resolver la duda.
Ya comentas.
Un saludo a todos.
Arriba
Trancos Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 11/Enero/2018
Localización: Zaragoza
Estado: Sin conexión
Puntos: 9
Enlace directo a este mensaje Enviado: 26/Enero/2018 a las 08:03
Buenos días prga, muchas gracias por tu respuesta.
En realidad es así como lo tengo puesto ahora, pero me resulta un poco lento de ejecución (resaltar todos los párrafos... uffff).
Pego el párrafo (con un estilo que llamo MD_AutoResp). Lo selecciono. Lo resalto en amarillo o lo "desresalto" según el contenido de la celda excel=elemento del array. Me voy al final del párrafo y meto un salto de carro para volver a empezar.

Pego el código completo que yo tenía, que coincide con lo que propones, pero si hubiera una forma más rápida resaltando únicamente lo necesario... (yo no la he encontrado).

    'Escribe la tercera respuesta.
        Selection.Style = ActiveDocument.Styles("MD_AutoResp")
        Selection.TypeText Text:=vContenido(vFila, 9)
        If vContenido(vFila, 3) = 3 Then
                Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
                Options.DefaultHighlightColorIndex = wdYellow
                Selection.Range.HighlightColorIndex = wdYellow
            Else
                Selection.MoveUp Unit:=wdParagraph, Count:=1, Extend:=wdExtend
                Options.DefaultHighlightColorIndex = wdNoHighlight
                Selection.Range.HighlightColorIndex = wdNoHighlight
        End If
        Selection.EndKey Unit:=wdLine
        Selection.TypeParagraph

Saludos y muchas gracias.
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 2944
Enlace directo a este mensaje Enviado: 26/Enero/2018 a las 13:37
Hola.
Otra posible solución pasaría por seleccionar solo el texto del párrafo (excluyendo el retorno de carro) y resaltar dicho texto. Así el "retorno" no arrastraría el resaltado.
Una forma de seleccionar el texto del párrafo seleccionado es:

Set mirango = ActiveDocument.Range(Start:=Selection.Paragraphs(1).Range.Start, End:=Selection.Paragraphs(1).Range.End - 1)
mirango.Select

Está escrito sin comprobar lo del resaltado
Otra cosa es que ya lo hayas utilizado o que sea más rápido que lo que ya tienes.
Ya comentas.
Un saludo a todos
Arriba
Trancos Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 11/Enero/2018
Localización: Zaragoza
Estado: Sin conexión
Puntos: 9
Enlace directo a este mensaje Enviado: 01/Febrero/2018 a las 22:35
Hola de nuevo. Disculpas por tardar en contestar.
He probado lo que me comentas y cada vez entiendo menos lo que pasa.
Se resalta el párrafo adecuado (exceptuando el último carácter, el de retorno de carro), luego salta al siguiente párrafo y lo resalta.
Y no lo entiendo porque, para asegurarme, inserto un espacio al final del párrafo (que me lo inserta sin resaltar, ojo) y al pasar al párrafo siguiente ¡zas! lo pone resaltado de nuevo.
Creo que lo voy a dejar así, ya no sé por dónde tirar :(
Te agradezco mucho tu ayuda, prga.
Saludos.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable