Imprimir informe

Hola de nuevo Soria, tengo un informe con una etiqueta, y quisiera que al cerrar el informe, me salte un msgbox para decirme si quiero o no imprimir la etiqueta, ¿pero cómo puedo mandar a impresión el formulario que tengo en pantalla? Este es el código que tengo puesto en el informe, que no manda la impresión... Un cordial saludo
Private Sub Report_Close()
Dim opcion As Integer
opcion = MsgBox("¿Imprimir la etiqueta con estos datos?", vbOKCancel)
If opcion = vbOK Then
DoCmd. Close acReport, "Report_Etiquetas"
DoCmd.OpenReport (Report_Etiquetas), acViewNormal
Else
DoCmd.Close acReport, "Report_Etiquetas"
End If
End Sub

1 Respuesta

Respuesta
1
¿te sale el msgbox?
¿Podría imprimir el informe como un objeto activo con la orden me? Si no fuera posible, ¿podrías detallarme más como hacer de otra forma?
Gracias. Saludos
El msgbox salta, pero cuando quiero imprimir el informe que tengo en pantalla me da un error. ¿Qué solución me planteas?
Gracias, y saludos
Se ve que el close de un objeto no permite volver a hacer un open del mismo objeto.
Tienes que esperar a que el objeto en cuestión se haya destruido completamente, o sea hacer el open en otro sitio.
En tal caso si puedes seguir haciendo el msgbox en el close y eso funciona, tal vez podrías meter la respuesta al msgbox en una variable publica que la puedas leer en el otro sitio.
Ok, estupendo.
Para crear la variable publica, declararla en la sección general de un modulo
dim Imprimir as integer
para asignarle el valor del msgbox en el evento close del report
Imprimir = Msgbox ("imprimir por impresora", vbYesNo)
Aa partir de ahí, posiblemente habría un formulario abierto, formulario que inició la vista previa.
(Habría que ver que evento se produce al volverle el enfoque o similares...)
---
Pero he estado probando tu cuestión y he visto una alternativa más clara:
Programar todo en el evento deactivate del informe
Sustituir docmd. Openreport por docmd. Printout
tal que así:
---
Private Sub Report_Deactivate()
Dim gOk As Integer
gOk = MsgBox("imprimir ahora", vbYesNo)
If gOk = vbYes Then
DoCmd.PrintOut
End If
End Sub
---

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas