Exportar informe a pdf en red

En mi oficina tengo 3 pc, en el servidor tengo una base de access, desde las otras 2 pc puedo trabajar sin ningún inconveniente, por medio de un botón guardar exporto informes a pdf pero me los guarda en cada pc que realizo esta acción. Lo que yo quiero lograr es los mismos queden guardados en una ruta especifica del servidor realizando esta operación desde cualquiera de las pc dándole yo un nombre al archivo pdf. ¿Se podrá lograr?...

1 respuesta

Respuesta
2

Partiendo de la base e que tienes permisos para grabar en el servidor, te facilito unas líneas "genericas", que muestran como hacerlo.

Dim NombreInforme As String, NombreInfPDF As String, RutaPDF As String, RutaYFicheroPDF As String
'Defino el Nombre completo del Fichero que se va a guardar
NombreInforme = "NombreDeTuInformeEnAccess" ' Ejemplo RptPedidos
NombreInfPDF = NombreInforme & ".pdf"
'Defino la Ruta donde quiero guardar los Ficheros PDF
RutaPDF = "Z:\Usuarios\FicherosPerez\InformesPDF\"  'Siendo Z la letra que identifica la Ubicación del Servidor.
'Si no la sabes tendrás que preguntarsela al Administrador. Otra Forma sería >> "\\........
'Completo la cadena para guardarlo
RutaYFicheroPDF = RutaPDF & NombreInfPDF
DoCmd. OutputTo acOutputReport, NombreInforme, acFormatPDF, RutaYFicheroPDF, False,,, acExportQualityPrint 'Si se quiere visualizar el PDF >> Poner True

Un saludo >> Jacinto

Hola Jacinto, primero que nada muchas gracias por tu respuesta. Te comento como algo importante que tengo muy poco conocimiento de access; he probado tu código, funciona, pero me imprime todos los informes que existen y yo solo quiero exportar el actual y de ser posible que no lo aclare en la pregunta, es si le puedo dar el nombre que yo quiera al archivo. Te envío un código que tengo para que me des tu opinión; el cual me da error y no puedo lograr solucionarlo. El error es "La acción OutputTo se canceló" 

Dim resp As Integer
Const miRuta As String = "C:\\GUSTAVO-PC\Users\GUSTAVO\Documents\PRUEBAPRESUPUESTOS"
Dim nombreArchivo As String
resp = MsgBox("¿Desea Imprimir el informe?", vbQuestion + vbYesNo, "CONFIRMAR")
If resp = vbYes Then
DoCmd.OpenReport "Presu0km", acViewNormal, , "idpresupuesto = " & Me.IDPRESUPUESTO
Else
nombreArchivo = InputBox("NOMBRE DEL PRESUPUESTO", "GUARDAR")
DoCmd.OpenReport "Presu0km", acViewPreview, , "idpresupuesto = " & Me.IDPRESUPUESTO, acHidden
DoCmd.OutputTo acOutputReport, "Presu0km", "PDFFormat(*.pdf)", "C:\\GUSTAVO-PC\Users\GUSTAVO\Documents\PRUEBAPRESUPUESTOS" & nombreArchivo & ".pdf", False, "", , acExportQualityPrint
End If
End Sub

Sin analizar de forma detallada, lo que veo raro de tu código es justo la dirección del Servidor.

Lo de C:\\ no acabo de verlo. Prueba con >> "\\Gustavo..., o como te comentaba la letra que tenga el Servidor.

Mira en tu red desde uno de los Equipos >> Botón derecho del Mouse >> Propiedades y debe darte la Dirección. Un saludo >> Jacinto

Perdón, con este código anda perfecto en el servidor, pero cuando quiero hacerlo desde cualquiera de las otras 2 pc me da el error "La acción OutputTo se canceló"

Dim resp As Integer
Const miRuta As String = "\\GUSTAVO-PC\Documents\PRUEBAPRESUPUESTOS\"
Dim nombreArchivo As String
resp = MsgBox("¿Desea Imprimir el informe?", vbQuestion + vbYesNo, "CONFIRMAR")
If resp = vbYes Then
DoCmd.OpenReport "PRESUPUESTONUEVO", acViewNormal, , "IDpresupuesto = " & Me.IDPRESUPUESTO

Else
nombreArchivo = InputBox("NOMBRE DEL PRESUPUESTO", "GUARDAR")
DoCmd.OpenReport "PRESUPUESTONUEVO", acViewPreview, , "IDpresupuesto = " & Me.IDPRESUPUESTO, acHidden
DoCmd.OutputTo acOutputReport, "PRESUPUESTONUEVO", "PDFFormat(*.pdf)", "\\GUSTAVO-PC\Documents\PRUEBAPRESUPUESTOS\" & nombreArchivo & ".pdf", False, "", , acExportQualityPrint
End If

End Sub

Volvamos al inicio:

Te comentaba que la ruta absoluta si sabes la letra de esa unidad de Red es facil.

Ejemplo: RutaPDF = "Z:\......."

Si quieres hacerlo con Ruta relativa, necesitas el Nombre del Equipo y el Nombre de la Unidad al cual quieres acceder. Por lo que veo en tu caso sería >>

Const miRuta As String = "\\GUSTAVO-PC\C\Documents\PRUEBAPRESUPUESTOS\"

Suponiendo que el disco se llama C, que no sé si en tu caso le has dado otro Nombre

Prueba y me comentas. Un saludo >> Jacinto

Hola Jacinto, después de tantas idas y vueltas, gracias a tus consejos funciona perfecto, solo una aclaración más; cuando quiero darle un nombre al archivo con espacios, ejemplo: "juan perez" en ese caso no me lo guarda, solo me lo guarda cuando coloco una sola palabra sin espacios, o sea si le coloco como nombre "juanperez" si me lo guarda; como podría solucionarlo?

Saludos.

Pues sinceramente ignoro por qué no lo guarda si le pasas un Nombre aunque sea con espacios.

Mira éste enlace del InputBox y en Default le pones un Nombre y no escribas nada:

https://support.office.com/en-us/article/inputbox-function-17821927-28b7-4350-b7f1-4786575314d9

Ejemplo:

NombreArchivo = InputBox("NOMBRE DEL PRESUPUESTO", "GUARDAR", "Juan Perez")

Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas