Exportar de informe access a word

Hola. Quería saber como podría exportar un informe de access a un word mediante código VBA o convertirlo a ese formato o algo parecido.
Muchas gracias
1

1 respuesta

1
Respuesta de
Hola Sastreconde
Te envío parte de una función que uso para generar un contrato. Yo tengo un archivo modelo en el que hay que intercalar textos como Apellido y nombre, DNI, Domicilio, etc.
Desde mi formulario Access tomo la información que deseo intercalar al contrato. En el contrato modelo están señalados con nombres entre numerales (##) los sitios del documento donde esta eltexto a intercalar. En el código que te paso dejé solamente el esqueleto para que veas cómo se declaran las variables, cómo se abre un documento, como se guarda, como se busca dentro del documento, cómo se reemplaza el texto buscado y como se intercala texto en el cursor (con esto último podrías escribir todo un documento de cabo a rabo) y finalmente cómo se guarda y se termina la ejecución de Word.
Suerte y espero que me cuentes cómo te fue. Marciana
Public Function GeneraContrato()
'**********************************************************************
'Declarar objetos para usar Word
'**********************************************************************
Dim Word As New Word.Application
Dim Contrato As Word.Document
Dim myRange As Range
Dim NombreArchivo As String
'**********************************************************************
'Hace visible o no Word según se desee y abre un documento existente
'**********************************************************************
Word.Visible = False
Set Contrato = Word.Documents.Open(Filename:="C:\Contrato.doc", ReadOnly:=False)
'**********************************************************************
'Define todo el documento
'**********************************************************************
Set myRange = Word.ActiveDocument.Content
'**********************************************************************
'Busca en todo el documento el texto #Destino# para reemplazarlo por el contenido de la variable Destino
'**********************************************************************
With myRange.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "#Destino#"
.Replacement.Text = Destino
.Execute Replace:=wdReplaceAll
End With
'**********************************************************************
'escribe el texto en el lugar del cursor o sobre una selecciòn si existiera
'**********************************************************************
Selection.typeText Text:="acà el texto para el documento Word"
'**********************************************************************
'Formatos de texto pone el texto en azul
'**********************************************************************
Selection.font.Color=wdColorBlue
'**********************************************************************
'Guarda el documento en otro archivo (si no usar .Save) cierra y libera espacio en memoria
'**********************************************************************
NombreArchivo = "C:\Carpeta\NombreArchivo.doc"
Contrato.SaveAs NombreArchivo
Contrato.Close False
Set Contrato = Nothing
Word.Quit
End Function
en Dim Word As New Word.Application no me sale el word. Supongo que tendré que hacer una referencia. Yo uso el access XP. ¿Qué referencia tengo que añadir?
Muchas gracias
Yo uso Office 2003, la función en una aplicación que tiene estas dos referencias. Probá.
Microsoft Word 11.0 Object Library
y
Microsoft Office 11.0 Object Library
Creo que va con la primera.
Va a salir Word pero después del punto no saldrá el Application, lo mismo en lo métodos y propiedades no siempre te despliega la ayuda contextual.
Por la forma de consultar te considero más del lado de los expertos (que al menos yo no lo soy tanto).
Un consejo que yo practico es probar primero con un ejemplo tonto tipo "Hola Mundo" para asegurarte que la estructura básica funciona bien.
No cierres la consulta hasta haber resuelto bien lo tuyo (me dicen que es difícil encontrarme disponible) contá conmigo para resolver algún problema (dentro de mis posibilidades).
Cordialmente, Marciana
Exactamente. Podes escribir una nota entera o podes, como hice en mi aplicación, reemplazar ciertas partes del texto. Podes modificar un documento existente o podes generar un documento nuevo.
También podes abrir directamente Word desde código o desde un botón.
Nada de pesadez, tu consulta es correcta. M
Ok. Yo con esto supongo entonces que no hace falta hacer ningún informe en access, ¿puesto qué con el código inserto directamente unos datos de mi base de datos en un archivo word.no? Perdón por la pesadez.je je. Es por asegurarme.je je.
Gracias
Es que hace mucho que no lo uso. Me esta dando error al llamar a la función. He puesto por ejemplo que se ejecute esa función al abrir un formulario y pone error de compilación. se esperaba .= o algo asi.
Yo para llamar la función puse sencillamente GeneraContrato()
No se si hay que poner un call o algo así...
Primero en la ventana de código abrí una ventana Inmediato (control +G) para hacer pruebas.
Cambiá Sub por Function (te cambiará automáticamente lo que sea necesario)
Podes probar compilar para asegurarte de la sintaxis.
En la ventana Inmediato probá escribir:
?GeneraContrato()
no se puede hacer con una Sub pero una function puede funcionar igual.
Las Sub se llaman directamente los argumentos van sin paréntesis la función se debe asignar a una variable
Ejemplo de las dos sintaxis:
GeneraContrato IdContrato
Respuesta=GeneraContrato(IdContrato)
Otra cosa, para probar una Sub lo podes hacer usando la tecla de función F5 con el cursor dentro de la función. Se puede usar si no hay argumentos.
Muchas gracias. Ya te diré. Porque en este ordenador tengo el windows vista y no puedo ver si funciona porque da error al guardar por las protecciones que tiene C:/. Cuando lo pruebe en XP te digo. Muchas gracias
Si que funciona. Muchísimas gracias. Y para escribir una lista por ejemplo de nombres y apellidos uno debajo del otro, como pongo el salto de linea.
Selection.TypeParagraph
El tema en esto es cuando uno se plantea y ¿y esto cómo se escribe?
Te paso un secretito. Si querés hacer algo en VBA sobre word (desde una macro, desde Access, etc) yo hago lo siguiente: abro Word y creo una macro nueva grabando.
Hago los pasos que me interesa (no más y no menos), termino la macro y luego voy a modificarla. Allí tengo la sintaxis que necesito, si me quedan dudas, sobre las palabras claves uso F1 que trae explicaciones y ejemplos que te amplían el tema. Conviene hacer las pruebas desde el mismo Word ya que la edición siempre dispone de la ayuda contextual que muchas veces (todavía no sé cuando sí y cuando no) no se dispone en Access. Supuestamente todo lo que se puede hacer en macros desde Word también se puede hacer desde Access. Ídem con Excel, Power Point, y otras aplicaciones de Office.
Otra fuente de consulta es el objeto Word con sus métodos, objetos y propiedades.
Me alegro mucho de que te haya sido útil. Marciana
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje
¿No es la respuesta que estabas buscando? Puedes explorar otras preguntas del tema Microsoft Access o hacer tu propia pregunta: