** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Tus Funciones Favoritas & Aportaciones & Artí­culos
  Mensajes nuevos Mensajes nuevos RSS - VBA: Actualizar campos Access-Word
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoVBA: Actualizar campos Access-Word

 Responder Responder
Autor
Mensaje
admin Ver desplegable
Administrador
Administrador
Avatar

Unido: 14/Agosto/2013
Localización: Cualquier lugar
Estado: Sin conexión
Puntos: 790
Enlace directo a este mensaje Tema: VBA: Actualizar campos Access-Word
    Enviado: 21/Agosto/2013 a las 17:16

Palabras Clave: Word, MSWord, llenar plantilla.

Esta funcion actualiza todos los campos de un documento Word; se necesita tener un documento abierto en una instancia de Word:

Private Sub AbrirDoc()

  Dim WordApp As Object

  strPATH = "c:\documento.doc"

  'creamos el objeto word

  Set WordApp = CreateObject("Word.Application")

  With WordApp

    .Visible = False

    'abrimos un documento

    .Documents.Open strPATH

   

    'manipulamos el documento y/o cambiamos

    'los valores de los campos (segun el tipo utilizado)

    'y forzamos la actualizacion con la funcion.

   

    f_xActualizarCampos .ActiveDocument

   

    'guardamos el documento y salimos de word

    .ActiveDocument.SaveAs strPATH

    .Quit

  End With

  Set WordApp = Nothing

End Sub

 

'* Autor: lucia68

'* adaptado a access-vba: Marius

'*

'* Uso: f_xActualizarCampos WordApp.ActiveDocument

'* (siendo WordApp un objeto Word.Application)

 

Function f_xActualizarCampos(objDOC As Object)

  Dim shpCuadroDeTexto As Object

  Dim sctSeccion As Object

  Dim tbcTablaContenidos As Object

  'constantes para tipos de encabezado/pie de pagina

  Const wdHeaderFooterPrimary = 1

  Const wdHeaderFooterFirstPage = 2

  Const wdHeaderFooterEvenPages = 3

  On Error Resume Next

  With objDOC

    'actualizar campos en el cuerpo del documento

    .Fields.Update

   

    'actualizar campos en los cuadros de texto

    For Each shpCuadroDeTexto In .Shapes

      shpCuadroDeTexto.TextFrame.ContainingRange.Fields.Update

    Next shpCuadroDeTexto

   

    'actualizar campos en encabezados y pies de pagina

    For Each sctSeccion In .Sections

      sctSeccion.Headers(wdHeaderFooterFirstPage).Range.Fields.Update

      sctSeccion.Headers(wdHeaderFooterPrimary).Range.Fields.Update

      sctSeccion.Headers(wdHeaderFooterEvenPages).Range.Fields.Update

      sctSeccion.Footers(wdHeaderFooterFirstPage).Range.Fields.Update

      sctSeccion.Footers(wdHeaderFooterPrimary).Range.Fields.Update

      sctSeccion.Footers(wdHeaderFooterEvenPages).Range.Fields.Update

    Next sctSeccion

   

    'actualizar campos en tablas de contenido

    For Each tbcTablaContenidos In .TablesOfContents

      tbcTablaContenidos.Update

      tbcTablaContenidos.Range.ParagraphFormat.Reset

    Next tbcTablaContenidos

  End With

End Function



Editado por genoma111 - 21/Agosto/2013 a las 19:00
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable