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

Tema cerradoFormato condicional en tabla de word

 Responder Responder
Autor
Mensaje
salvaleuven Ver desplegable
Nuevo
Nuevo


Unido: 04/Octubre/2020
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 45
Enlace directo a este mensaje Tema: Formato condicional en tabla de word
    Enviado: 10/Diciembre/2022 a las 19:18
Hola a todos, necesito hacer una cosa un pelín rara quizás, pero que me sería muy útil:

Se trata de lograr que el texto de una celda en una tabla de word adquiera un formato (color rojo, por ejemplo) en función del formato que tenga el texto en una celda vecina (por ejemplo, negrita). Es decir, si la celda A1 tiene formato negrita, que por ejemplo, la celda B1 tenga automáticamente formato color rojo.

En excel creo que sabría hacerlo, pero en word, la verdad que ni idea.

Muchísimas gracias a todos por adelantado,

Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 12/Diciembre/2022 a las 19:34
Hola.
A la espera de mejores y más sencillas soluciones, ahí va una complicada que es un ejemplo de trabajo que se tiene que adaptar, mejorar, optimizar etc etc
Supongamos que tenemos un documento con una tabla con un marcador (mitabla) que encierra a toda la tabla. Sirva esto para saber en que tabla estamos ya que el documento puede tener varias tablas. 
Suponemos que la columna 1 de dicha tabla puede tener texto(todo) en negrita o no y lo que buscamos es que al escribir en la columna 2 lo haga en rojo o negro según la celda de la primera columna esté en negrita o no.
Para ello haremos:
1º.-Crearemos un módulo de clase (clase1) con el siguiente código:
Option Explicit

Public WithEvents appWord As Word.Application
 

Private Sub appWord_WindowSelectionChange(ByVal Sel As Selection)
Dim mifila As Long
Dim micolumna As Long
''''el marcador de nombre  mitabla   incluye sólo la tabla en cuestión
If Sel.Tables.Count = 1 And Sel.Bookmarks.Count = 1 Then
  If Sel.Bookmarks(1).Name = "mitabla" Then
    mifila = Sel.Cells(1).RowIndex
    micolumna = Sel.Cells(1).ColumnIndex
     If micolumna = 2 Then   ''''aquí el número de columna en cuestión. SE SUPONE QUE LA COLUMNA 1 DA EL FORMATO
       If Sel.Tables(1).Cell(mifila, 1).Range.Font.Bold = True Then
          Sel.Cells(1).Range.Font.ColorIndex = wdRed
        Else
          Sel.Cells(1).Range.Font.ColorIndex = wdBlack
       End If
      Else
     '''no es columna 2
     End If
  End If
 Else
 ''''''MsgBox ("no tabla")
End If

End Sub

2º.- En thisdocument el siguiente código para que al abrir se "cargue" el módulo de clase

Option Explicit

Dim miapli As New Clase1


Public Sub AutoNew()
  Set miapli.appWord = Application
 End Sub

Public Sub AutoOpen()
  Set miapli.appWord = Application
End Sub

con lo anterior y evidentemente teniendo las macros "activadas", se consigue un "simulacro" de formato condicional.

Espero que sirva de ayuda.
Ya comentas.
Un saludo a todos


Arriba
salvaleuven Ver desplegable
Nuevo
Nuevo


Unido: 04/Octubre/2020
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 45
Enlace directo a este mensaje Enviado: 12/Diciembre/2022 a las 20:30
Pues muchísimas gracias, porque he sido capaz de avanzar y casi estoy a punto de lograr lo que quería. Para refinarlo más, sólo necesitaría que me indicaras cómo sería posible que en vez de que se cambie el formato del texto de la celda a rojo, sustituya el contenido de la celda completo por un símbolo determinado, por ejemplo "*"

Un saludo y muchas gracias otra vez
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 12/Diciembre/2022 a las 20:49
hola.
Prueba con la siguiente modificación

       If Sel.Tables(1).Cell(mifila, 1).Range.Font.Bold = True Then
         ''' Sel.Cells(1).Range.Font.ColorIndex = wdRed
          Sel.Cells(1).Range.Text = "*"
          
      '  Else
     '     Sel.Cells(1).Range.Font.ColorIndex = wdBlack
       End If

Ya comentas
Un saludo a todos

Arriba
salvaleuven Ver desplegable
Nuevo
Nuevo


Unido: 04/Octubre/2020
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 45
Enlace directo a este mensaje Enviado: 12/Diciembre/2022 a las 21:05
Ok, por último, te cuento: tengo una aplicación que genera un word con la tabla en cuestión, partiendo de una plantilla que puedo personalizar, incluir código etc. Trato de conseguir que se añadan los símbolos * una vez que la aplicación ha generado el archivo, mediante una llamada a un procedimiento como el que has descrito que incluiría en la propia plantilla. Creo que tal como lo has expuesto, se requiere que se edite manualmente la celda en cuestión, y darle a enter para que se actualice y aplique el formato (o añada el símbolo). Quizás para lo quiero sería más práctico programar que línea por línea en la tabla busque el formato en la columna 2 y si encuentra negrita, añada símbolo * en la columna 6 de la misma línea.

Siento no haberlo explicado con más detalle desde el principio, pero no quería complicar mucho la pregunta, e intentarlo yo a partir de lo que se me respondiera.

Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3523
Enlace directo a este mensaje Enviado: 12/Diciembre/2022 a las 21:45
Hola.
La solución expuesta evidentemente es para el llenado a "mano" de la tabla.
Otra cosa muy diferente es que la tabla se llene a través de una importación( hasta ahora no se sabía nada de eso) desde otra aplicación.
Como la posible solución casi seguro que no tendrá nada que ver con la expuesta, mejor abrir un hilo nuevo en el que se explique todo lo relativo a esa importación.
Un saludo a todos
Arriba
salvaleuven Ver desplegable
Nuevo
Nuevo


Unido: 04/Octubre/2020
Localización: ESPAÑA
Estado: Sin conexión
Puntos: 45
Enlace directo a este mensaje Enviado: 12/Diciembre/2022 a las 23:16
Muchas gracias, damos por tanto por cerrado el hilo.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable