** 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 Tema: Cambiar pie de página por código o macro
    Enviado: 10/Diciembre/2018 a las 13:24
Buenos días a todos.
Con frecuencia, para un nuevo trabajo utilizamos documentos creados para trabajos anteriores.
Como cambiamos de domicilio, necesito que el pie de página se actualice con la nueva dirección.
He creado una macro que lo realiza, pero como necesita la intervención del usuario, no es un sistema fiable.
Lo que quiero hacer, y no consigo, es que al abrir un documento creado antes del 1-1-2018, se abra un cuadro de diálogo preguntando si se quiere cambiar el pié de pagina.
Muchas gracias.
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: en línea
Puntos: 5440
Enlace directo a este mensaje Enviado: 11/Diciembre/2018 a las 13:48

Prueba si te vale esto, en el módulo ThisDocument :

Private Sub Document_Open()

  With ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary)

    If .Range.Text <> vbCr Then

      If MsgBox("¿Quieres cambiar el pié de página?", vbYesNo, _

          "ASV - Actual P. de P.: " & Left(.Range.Text, 15) & "...") = 6 Then _

          .Range.Text = "Aquí nuevo texto para el Pie de página."

    End If

  End With

End Sub

 

Nota: La extensión del documento debe ser .docm y debes autorizar la ejecución de macros (mejor firmado o ubicado en una carpeta de confianza).



Aprendemos viendo respuestas de otros, también intentando resolver dudas (intenta ayudar cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
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: 11/Diciembre/2018 a las 17:47
Buenas tardes AnSanVal y muchas gracias por tu respuesta.
Necesito que me des otro empujón para pulir el tema.
He creado la macro AutoOpen que ejecuta parte de tu código, pero donde necesito añadir el If que indico en el comentario de la primera linea

Sub autoopen()

' Aqui necesito un If la fecha de modificación del archivo es < 1-12-2018 Then

With ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary)

    If .Range.Text <> vbCr Then

      MsgBox ("¿Quieres cambiar el pié de página?")     

    End If

  End With

End Sub

Muchas gracias
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3135
Enlace directo a este mensaje Enviado: 11/Diciembre/2018 a las 20:10
Hola.
Una forma de saber la fecha de la última modificación de un documento es:

ActiveDocument.BuiltInDocumentProperties(wdPropertyTimeLastSaved)

Otra cosa es la comparación entre esa fecha y la expuesta. Una manera a la "antigua" sería:

if Format(ActiveDocument.BuiltInDocumentProperties(wdPropertyTimeLastSaved), "yyyymmdd") < "20181201" then

Espero que ayude a resolver la duda
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: 12/Diciembre/2018 a las 08:43
Buenos días y gracias de nuevo por tu ayuda.
He probado con lo siguiente y no responde el tema de la fecha:

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

End Sub
Muchas gracias por vuestra ayuda.
www.ofp.cat
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: en línea
Puntos: 5440
Enlace directo a este mensaje Enviado: 12/Diciembre/2018 a las 12:27
Si el código que te ofrecí lo has reducido a MsgBox ("¿Quieres cambiar el pie de página?")… ¿Para que sirve esa pregunta? 

(En Word) con prga estás en muy buenas manos.


Aprendemos viendo respuestas de otros, también intentando resolver dudas (intenta ayudar cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
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: 13/Diciembre/2018 a las 13:58
ok, entiendo que no te cuadre. 
Esa linea la modificaré de forma que si se contesta afirmativamente, se ejecute una macro que substituye el pié de página antiguo por el nuevo. Ambos son archivos jpg.
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3135
Enlace directo a este mensaje Enviado: 13/Diciembre/2018 a las 15:29
Hola.
Unas preguntas, ¿En el pié de página hay texto? ¿Hay solo una imagen? ¿Hay ambas cosas?.
Otra ¿Qué interpretación lógica das a la línea  If .Range.Text <> vbCr Then???
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: 13/Diciembre/2018 a las 16:44
Tocado.
En el pié de página hay solo imagen.
¿Qué debería poner en lugar de  If .Range.Text <> vbCr ?
Gracias y perdonad mi ignorancia
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: 13/Diciembre/2018 a las 17:40
Intento explicar mejor lo que intento hacer.
Pretendo que al abrir un documento, si tiene pié de página y la fecha de última modificación del archivo  es anterior al 1-12-2018 entonces me pregunte si quiero cambiar el pié de página.
Gracias
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3135
Enlace directo a este mensaje Enviado: 13/Diciembre/2018 a las 19:16
Hola.
prueba con algo parecido a:

If ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.InlineShapes.Count = 1 Then
  If Format(ActiveDocument.BuiltInDocumentProperties(wdPropertyTimeCreated), "yyyymmdd") < "20181201" Then
    MsgBox ("Es hora de cambiar el pie de página")
  End If
End If


Es un ejemplo de prueba
Se supone que la fecha es el 01/12/2018 y no el 01/01/2018 que pones al principio y que el pie de página tiene una sola imagen o ninguna
Evidentemente, este código no cambia una imagen por otra
Espero que ayude a resolver la duda
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: 13/Diciembre/2018 a las 19:51
Gracias. He probado y el primer If no actúa correctamente
Arriba
prga Ver desplegable
Moderador
Moderador


Unido: 16/Noviembre/2004
Localización: España
Estado: Sin conexión
Puntos: 3135
Enlace directo a este mensaje Enviado: 13/Diciembre/2018 a las 20:47
Prueba así:

If ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Shapes.Count = 1 Then

Repito, se supone que hay una sola imagen o ninguna en el pie de página
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 09:18
Tampoco me funciona este If.
He revisado en la ayuda y veo que la sintaxis es correcta.
He cambiado = 1 por >0 y tampoco funciona.
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: 3135
Enlace directo a este mensaje Enviado: 14/Diciembre/2018 a las 10:25
Hola.
No sé, ya que a mí me ha funcionado con las pruebas hechas, tanto sí es un "shape" o un "inlineshape" 
Está claro que no he podido reproducir tu situación.
Sí puedes, pon en algún sitio un documento word con el "problema" para ver que pasa e intentar buscar alguna solución.
Ya comentas.
Un saludo a todos
Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable