Access - combinar Access con Word

   
Vista:

combinar Access con Word

Publicado por blas (1 intervención) el 16/09/2010 11:15:06
Hola amigos hace tiempo que no pregunto. haber si podeis echarme una mano. Tengo una base de datos sobre gestion de informes, los datos de los registro en Access van a una plantilla de Word. Un boton en el formulario principal abre la plantila y la guarda en una carpeta atendiendo al un numero de registro que toma de Access. Hasta aqui bien. lo que me ocurre, es que me guarda el documento de Word dando como nombre de guardar como, el numero de registro de Access que es lo que yo quiero, pero no actualiza todos los demás datos del formulario por lo que el documento que guarda a excepción del número de registro siempre es el mismo. Este es el código que utilizó, que alguien me diga que es lo que hago mal o que tengo que modificar o añadir a el para que funcione correctamente, es decir, que abra la plantilla de Word, con los datos compeltos del registro activo. Muchas gracias, blas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Private Sub Comando309_Click()
On Error GoTo ManejadorError
 
Dim appWord As Word.Application
Dim docs As Word.Documents
Dim doc As Word.Document
Dim strRutaPlantilla As String
Dim strTestPlantilla As String
Dim strNuevoDocumento As String
 
' Ruta completa de la plantilla de Word
strRutaPlantilla = "C:\Blas\Part Acc 2009\Informe accidente.dot"
' Ruta y nombre del nuevo documento
strNuevoDocumento = "C:\Blas\Part Acc 2009\Atestados\" & Me.IDRefNum & ".doc"
'Sí existe el archivo lo abrimos y nos salimos,
' sino existe lo creamos
strTestPlantilla = Nz(Dir(strNuevoDocumento))
 
If strTestPlantilla <> "" Then
Application.FollowHyperlink strNuevoDocumento
Exit Sub
End If
 
Set appWord = CreateObject(Class:="Word.Application")
Set docs = appWord.Documents
Set doc = docs.Add(strRutaPlantilla)
 
With appWord
.Visible = True
.ActiveDocument.SaveAs strNuevoDocumento
.Activate
End With
 
ManejadorErrorSalir:
Exit Sub
ManejadorError:
If Err.Number = 429 Then
Set appWord = CreateObject(Class:="Word.Application")
Resume Next
Else
MsgBox Err.Description, , "Error Nº: " & Err.Number
Resume ManejadorErrorSalir
End If
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:combinar Access con Word

Publicado por mi menda (1111 intervenciones) el 17/09/2010 10:42:51
Hola:
Visto el manejador de error que utilizas, creo que ese código lo he puesto yo.
Con ese código simplemente guardas la plantilla con un nuevo nombre sí no existe el documento.
En la plantilla de word tendrás que crear Campos o Marcadores, y mediante un recordset ir asignando a cada campo o marcador de word el valor que le corresponda del recordset.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinar Access con Word

Publicado por blas (143 intervenciones) el 19/09/2010 10:44:14
Mi menda si no es m ucho pedir, me puedes decir en el código que ya as visto donde puedo meter el recordeset, a ser posible con un ejemplo. Los campos en Word ya los tengo creados, te digo. Tengo un campo por ejemplo llamado: "nombreapellidos", otro "dni", otro "direccion". Los puedes llevar hasta el código y decimen don los meto para que funcione correctamente. Muchas gracias de verdad.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinar Access con Word

Publicado por mi menda (1111 intervenciones) el 20/09/2010 19:48:52
Hola:
Sí los campos que vas ha rellenar en Word los tienes en un formulario no hace falta un recordset, sí hiciera falta un recordset cambiaríamos el código. La verdad es que el código no lo he probado, solo lo he modificado basándome en otro que tengo, así que puede ser que de fallos. Sí da fallo comenta donde lo da, y sí no da fallo y no funciona el código quita la línea: on Error Resume Next

Un saludo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Private Sub Comando309_Click()
Dim appWord As Word.Application
Dim docs As Word.Documents
Dim doc As Word.Document
Dim campoWord As Object
Dim strRutaPlantilla As String
Dim strTestPlantilla As String
Dim strNuevoDocumento As String
 
On Error GoTo ManejadorError
 
' Ruta completa de la plantilla de Word 
strRutaPlantilla = "C:\Blas\Part Acc 2009\Informe accidente.dot"
' Ruta y nombre del nuevo documento 
strNuevoDocumento = "C:\Blas\Part Acc 2009\Atestados\" & Me.IDRefNum & ".doc"
'Sí existe el archivo lo abrimos y nos salimos, 
' sino existe lo creamos 
strTestPlantilla = Nz(Dir(strNuevoDocumento))
 
If strTestPlantilla <> "" Then
Application.FollowHyperlink strNuevoDocumento
Exit Sub
End If
 
Set appWord = CreateObject(Class:="Word.Application")
Set docs = appWord.Documents
Set doc = docs.Add(strRutaPlantilla)
Set campoWord = doc.CustomDocumentProperties
 
On Error Resume Next
 
campoWord.Item("NombreDeCampoWord").Value = CampoFormulario
campoWord.Item("OtroNombreCampoWord").Value = OtroCampoFormulario
' Sigue con los demás campos de word
 
With appWord
.Visible = True
.Selection.WholeStory
.Selection.Fields.Update
.ActiveDocument.SaveAs strNuevoDocumento
.Activate
.Selection.EndKey Unit:= wdStory
End With
 
ManejadorErrorSalir:
Exit Sub
ManejadorError:
If Err.Number = 429 Then
Set appWord = CreateObject(Class:="Word.Application")
Resume Next
Else
MsgBox Err.Description, , "Error Nº: " & Err.Number
Resume ManejadorErrorSalir
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinar Access con Word

Publicado por blas (143 intervenciones) el 20/09/2010 20:49:06
Mi menda, abre la plantilla de Word y la guarda con el numero de registro activo, pero la plantilla tiene todos los datos, es decir es como si abriera la plantilla de word a traves de un hipervinculo. He quitado la linea que dices y entonces no funciona nada ni siquiera abre la plantilla. Gracias por atenderme. Seguiré haciendo puebas y te comento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinar Access con Word

Publicado por mi menda (1111 intervenciones) el 20/09/2010 21:24:19
Hola:
Lo acabo de probar y funciona correctamente.

¿Tienes activada la Referencia Microsoft Word 1x Object Library?
¿Como haces los campos en Word?
¿Que versión de Access utilizas?

Te comento que los campos en Word tienen que ser DocProperty

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinar Access con Word

Publicado por blas (143 intervenciones) el 21/09/2010 20:03:14
Mi menda, gracias por las molestias de haber probado el código y no sabes la alegría que mé da el saber que funciona correctamente. Mé pongo a ello y voy a probarlo. Ya té comentare el resultado. A las preguntas tuyas contesto.

He activado la Referencia Microsoft Word 10.0 Object library-No veo otra.-

Desde la plantila de Word sigo los pasos del asistente para combinar correspondencia. después inserto los campo de combinación en la plantilla.

La versión de Access es la que viene con el paquete de Microsoft office XP
y la de Word también la versión 10.04219.0.

He probado con los campos DocProperty y me da un error. Seguro que algo hago mal. sigo con ello. Espero respuesta tuya gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinar Access con Word

Publicado por mi menda (1111 intervenciones) el 21/09/2010 20:58:53
Hola:
No valen los campos de combinar correspondencia, y como yo tengo Access 2007 no te puedo explicar paso a paso como se crean en otra versión porque ya no me acuerdo, pero te diré más o menos para que te puedas orientar.
Busca algo como Propiedades de documento que puede que este en el menu Archivo, una vez estés ahí busca algo como Personalizar y verás algo como Nombre, Tipo, Valor,Propiedades. En Nombre pon el nombre de como llamaras al campo y en valor introduce un espacio con la barra espaciadora, Tipo lo dejas como Texto, le das a Agregar e insertas los demás campos.
Luego vas al Menu Insertar eliges campos y de las lista seleccionas DocProperty, y alli veras los campos que has creado anteriormente para insertar.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinar Access con Word

Publicado por blas (143 intervenciones) el 21/09/2010 21:30:40
Mi menda, ya me da hasta corte seguir preguntandote, quiza sea un poco torpe. He hecho lo que me dices pero luego cuendo inserto el campo en el documento no sale nada, ni siquiera el campo. Quiza nos comemos mucho el coco. Haciéndolo como yo digo, el documento se abre, lo guarda dándole como nombre el numero de referencia, pero en vez de un documento de Word, guarda toda la plantilla con todos lo registros. Me entiendes ahora. Yo lo que quiero, es que abra el documento con lo datos del registro activo que hay en el formulario de Access, solo los datos de ese registro, y lo guarde en la carpeta Atestados con el numero de referencia. si lo observas bien casi lo tenemos. Hace todo pero abre siempre en el mismo registro y guarda todos los datos de la plantilla de Word. Me entiendes ahora. Espero no calentarte mucho la cabeza, gracias mi menda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinar Access con Word

Publicado por mi menda (1111 intervenciones) el 21/09/2010 22:39:14
Vamos a ver Blas..., una cosa es combinar correspondencia y otra rellenar campos de un documento mediante código. Sí te vale la primera opción te creas un documento combinado por ejemplo a una consulta que refleje el registro activo del formulario y punto, pero te aconsejo que aprendas con código.
En el caso que estamos:
1º El documento no tiene que ser de combinar correspondencia.
2º Sí has llegado a crear los campos y no los ves pulsa Alt +F9, esta combinación de teclas es para ver/ocultar los campos
3º Sí llegas a ver los campos, ya lo tienes hecho
4º Si no logras hacerlo, mándame lo que has hecho y te lo reviso
5º Después del tiempo empleado lo harás con código sí o sí.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinar Access con Word

Publicado por blas (143 intervenciones) el 22/09/2010 20:55:49
Eres un GENIO mi menda, un GENIO con mayusculas. Ahora sí. He probado y ahora si funciona el código. Me he puesto muy contento cuando me ha salido bién gracias a tí. Hay un pequeño problema que no creo sea obstáculo para tí. Desde el formulario abro la plantilla, con sus datos en el registro activo y después lo guarda tomando como nombre de archivo el número de registro activo, pero, si cambio algún dato en el formulario de Access, no me lo cambia en el documento guardado ya. Que ocurre, pués que el documento es el mismo, es decir, no actualiza los datos cambiados después de guardado. Por ejemplo, si mé equivoco al poner en el campo nombre Mario y lo cambio por José, el documento no se actualiza, lo llamo y vuelve a aparecer con Mario. Pero si modifico algun dato en el formulario de Access, elimino el documento generado y guardado anteriormente y desde el botón vuelvo a llamarlo ahora sí se acualiza con el dato nuevo. Por eso creo, que falta alguna línea en algún sitio del código que una vez se modifique algun dato en el formulario cuando vuelva a abrir el documento otra vez, este diga algo así como "el documento ha sido modificado desea Vd., aceptar los cambios" ó algo parecido. No se si mé explico mi Menda. Ya me comentas si no té he liado mucho. Gracias de nuevo GENIO.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinar Access con Word

Publicado por mi menda (1111 intervenciones) el 23/09/2010 09:54:38
Hola
Sustituye esto

1
2
3
4
If strTestPlantilla <> "" Then
Application.FollowHyperlink strNuevoDocumento
Exit Sub
End If

Por

1
2
3
4
5
6
7
8
9
If strTestPlantilla <> "" Then
If MsgBox("El Documento ya existe. ¿Desea actualizarlo", _
vbInformation + vbYesNo + vbDefaultButton2, _
"Actualizar Documento") = vbNo Then
'Esta linea la ponemos solo sí queremos que se abra el documento
Application.FollowHyperlink strNuevoDocumento
Exit Sub
End If
End If

Un Saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

RE:combinar Access con Word

Publicado por blas (143 intervenciones) el 23/09/2010 12:24:54
Genial Mi Menda, justo lo que yo queria. Muchas garcias. Ya me pongo a funcionar. A tengo otro problema con el formato de fechas pero hago una nota nueva para que esta ya la den por contestada y cerrada, otra vez muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinar Access con Word

Publicado por jorge (2 intervenciones) el 21/08/2012 06:24:49
Pregunto algo relacionado a esto anterior. Como hago para pasar datos de Consulta de Access a Word, haciendo un clic en un boton y me pase los datos de un solo registro que este viendo en un Formulario. Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinar Access con Word

Publicado por camilo (1 intervención) el 21/10/2013 23:17:54
Buenas tardes.

He leido con mucho detenimiento esta ayuda y gracias a ella ya tengo todo funcionando, sin embargo, quisiera saber como puedo hacer para que desde el vba o el access me pregunte donde y conque nombre guardo el archivo de word.

De antemado le agradezco la ayuda, y le confieso que de todo lo que busque, fue con su ayuda que puede hacer todo lo que necesitaba, muy bien explicado.

Cordialmente.

Camilo Torres.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:combinar Access con Word

Publicado por Karki (1 intervención) el 16/12/2013 10:40:16
Unas letras únicamente para agradecer el hilo y el código desarrollado, me ha venido genial.
Muchas gracias mi menda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar