Convertir directamente a PDF informes sin ser visualizados

A tod@s

Necesito crear un PDF directamente sin tener necesariamente de visualizar opreviamente el Informe y desde alli crearlo.

He copiado de ejemplos encontrados aqui en TodoExpertos que trato de adptar:

Private Sub Comando158_Click()    
   Dim RutaPDF As String
   Dim NombreInfPDF As String
   Dim RutaYFicheroPDF As String
   RutaPDF = Application.CurrentProject.Path & "\InformesPDF\"
   NombreInfPDF = InforVentas& Me.IdVentas & ".pdf"
   RutaYFicheroPDF = RutaPDF & NombreInfPDF
DoCmd.OutputTo ObjectType:=acOutputReport, ObjectName:=InforVentas,    OutputFormat:=acFormatPDF, OutputFile:=RutaYFicheroPDF, AutoStart:=False 'True
End Sub

Pero me esta dando el error:

2447 .. El argumento para la accion o metodo esta en blanco o no es valido

Y no se exactamente donde pueda tener el error por muchas pruebas que realizo siempre me dice lo mismo.

A ver si podeis ayudarme en esto y decirme que esta mal en la accion.

1 respuesta

Respuesta
1

Creo que el error lo tienes en esta parte:

NombreInfPDF = InforVentas& Me.IdVentas & ".pdf"

Si InforVentas es parte del nombre que le quieres dar al pdf (InforVentas0001.pdf), has de ponerlo entre comillas, porque sino Access te lo trata como una variable que no tiene valor (salvo que efectivamente sea una variable pública y le asignes un valor previamente)

NombreInfPDF = "InforVentas" & Me.IdVentas & ".pdf"

Lo mismo es esta parte: ObjectName:=InforVentas,

Si InforVentas es el nombre del informe que vas a imprimir, ha de ir entre comillas:

ObjectName:="InforVentas"

Ya irás diciendo.

Saludos!


Un nuevo espacio dedicado a Access, visítanos: http://nksvaccessolutions.com/ 

Hola de nuevo. Gracias por tu ayuda.

He corregido las modificaciones que me has indicado y me crea el PDF y no me da ya el error. Pero dentro del PDF me coloca la totalidad de todas la lineas de todas las ventas relizadas y no solamente las de la venta que estoy tratando.

Obviamente te saldrán todos los registros porque en ningún momento le pasas un filtro al informe..

Añade esta línea antes del DoCmd. OutputTo, adaptándola a tu caso concreto:

DoCmd.OpenReport "InforVentas",acViewPreview,, "IdVentas=" & Me.IdVentas, acHidden

Y Después del DoCmd. OutputTo, ésta otra:

DoCmd. Close acReport, "InforVentas"

Mira esta otra pregunta, que solucionamos el mismo tema: Informe de Access me da la opción de imprimir ni de guardar

Funciona ya perfectamente, solo una cosa más si no es mucho pedirte, habría alguna manera de poder variar el nombre que sale que es el nombre del formulario. Se podría cambiar por el nombre del Cliente o variar el texto para que no saliese el texto de InforVentas.

Sí, modifica esta línea para darle el nombre que quieras:

NombreInfPDF = "InforVentas" & Me.IdVentas & ".pdf"

Por ejemplo, si el ID venta es el 15:

NombreInfPDF = "Informe de ventas nº " & Format(Me.IdVentas,00000) & ".pdf"

te saldría: "Informe de ventas nº 00015.pdf"

NombreInfPDF = Me.NombreCliente & ".pdf"

Te saldría (si el cliente es Pepe): "Pepe.pdf"

La imaginación es el único límite.

Ya tengo soluciona lo del cambio de nombre. Muchas gracias por toda tu ayuda

No es nada. Saludos!


Un nuevo espacio dedicado a Access, visítanos: http://nksvaccessolutions.com/ 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas