** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Word
  Mensajes nuevos Mensajes nuevos RSS - Cambiar pie de página por código o macro
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCambiar pie de página por código o macro

 Responder Responder Página  <12
Autor
Mensaje
Eduard.2008 Ver desplegable
Asiduo
Asiduo


Unido: 05/Diciembre/2008
Localización: Catalunya
Estado: Sin conexión
Puntos: 468
Enlace directo a este mensaje Enviado: 14/Diciembre/2018 a las 12:05
Éste es el código de la macro "autoopen()" completo, y en el que no me funciona el 2º If. 
La imagen del pié de página es un jpg.

Sub autoopen()
    With ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary)
    If .Range.Text <> vbCr Then
    If ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Shapes.Count > 1 Then
     If Format(ActiveDocument.BuiltInDocumentProperties(wdPropertyTimeCreated), "yyyymmdd") < "20181201" Then
    MsgBox ("¿Quieres cambiar el pié de página?")
    End If
    End If
    End If
   
  End With

End Sub


Muchas gracias por vuestra ayuda.
www.ofp.cat
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3091
Enlace directo a este mensaje Enviado: 14/Diciembre/2018 a las 13:00
Hola.
Es que ese no fue el último código puesto, era:


If ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Shapes.Count > 0 Then
     If Format(ActiveDocument.BuiltInDocumentProperties(wdPropertyTimeCreated), "yyyymmdd") < "20181201" Then
    MsgBox ("¿Quieres cambiar el pié de página?")
    End If
    End If


O la otra opción con inlineshapes.

La línea if .range.text<>vbcr Then es un If sin complicaciones, me explico
.range.text nos devuelve el texto, incluyendo el retorno de carro, que hay en el pie "principal" de página. Al ser <>vbcr, sólo será True si hay algún texto como tal( siempre está el vbcr). Como dices que no hay texto, pues ahí siempre será False( .range.text tiene como valor vbcr) y no se entrará en ese If ( se entraría en el else correspondiente). Lo que sigue de programación nunca se ejecuta con ese condicionante. Es lo básico de lo básico en programación.
Espero que ya funcione con estas puntualizaciones.
Ya comentas.
Un saludo a todos


Arriba
Eduard.2008 Ver desplegable
Asiduo
Asiduo


Unido: 05/Diciembre/2008
Localización: Catalunya
Estado: Sin conexión
Puntos: 468
Enlace directo a este mensaje Enviado: 14/Diciembre/2018 a las 13:43
If ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Shapes.Count > 0 Then
y siempre me da false
desesperado con el tema he puesto
If ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Shapes.Count = 0 Then
y siempre me devuelve True
Está probado con diferentes documentos con y sin pié y el resultado siempre es el que he explicado.
Muchas gracias por vuestra ayuda.
www.ofp.cat
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3091
Enlace directo a este mensaje Enviado: 14/Diciembre/2018 a las 15:41
prueba la otra opción:
 If ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.InlineShapes.Count > 0 Then
  If Format(ActiveDocument.BuiltInDocumentProperties(wdPropertyTimeCreated), "yyyymmdd") < "20181201" Then
    MsgBox ("Es hora de cambiar el pie de página")
  End If
End If

Otra cosa. ¿Qué versión de office utilizas?
Ya comentas.
Un saludo a todos
Arriba
Eduard.2008 Ver desplegable
Asiduo
Asiduo


Unido: 05/Diciembre/2008
Localización: Catalunya
Estado: Sin conexión
Puntos: 468
Enlace directo a este mensaje Enviado: 14/Diciembre/2018 a las 16:50
He probado y pasa lo mismo.
La versión es Office 2007
Muchas gracias por vuestra ayuda.
www.ofp.cat
Arriba
Eduard.2008 Ver desplegable
Asiduo
Asiduo


Unido: 05/Diciembre/2008
Localización: Catalunya
Estado: Sin conexión
Puntos: 468
Enlace directo a este mensaje Enviado: 15/Diciembre/2018 a las 10:23
Solución:
Buenos días a todos.
Gracias a todos los que me habéis ayudado, y de forma especial al moderador prga que, en privado, ha dado con la solución.
El problema era tener dos pies de página diferentes y cambiar el principal.
Copio a continuación el código definitivo por si puede ser útil para alguien más.
Finalmente he decidido que el cambio del pié de página sea automático sin intervención del usuario por lo que veréis que he incorporado al final el código correspondiente.

Sub autoopen()
If ActiveDocument.Sections(1).Footers(wdHeaderFooterFirstPage).Range.InlineShapes.Count > 0 Then
If Format(ActiveDocument.BuiltInDocumentProperties(wdPropertyTimeLastSaved), "yyyymmdd") < "20181216" Then
    WordBasic.RemoveFooter
    WordBasic.ViewFooterOnly
    Selection.InlineShapes.AddPicture FileName:= _
        "U:\LOGO.jpg", LinkToFile:=True, _
        SaveWithDocument:=True
        Selection.EscapeKey
  End If
End If
End Sub
Muchas gracias por vuestra ayuda.
www.ofp.cat
Arriba
 Responder Responder Página  <12
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable