Exportar a Excel varios reportes a la vez eligiendo la ruta.

Estoy intentando utilizar una función que me proporcionaron ustedes oportunamente para poder imprimir varios reportes juntos eligiendo la ruta. La función es la siguiente:

Option Compare Database

'--------------------------------------------------------------------------------------------
'Función para seleccionar una carpeta
'--------------------------------------------------------------------------------------------

Public Function fncSelectCarpeta() As String
'Creamos un control de errores
On Error GoTo sol_err
'Declaramos las variables
Dim fd As Object 'fd = FileDialog
Dim rutaIni As String
'Definimos la ruta inicial
rutaIni = Application.CurrentProject.Path
'Creamos el objeto FileDialog
Set fd = Application.FileDialog(msoFileDialogFolderPicker)
'Configuramos las características de nuestra ventana de diálogo
With fd
.Title = "Selecciona la carpeta"
.ButtonName = "Aceptar"
.InitialView = msoFileDialogViewList
.InitialFileName = rutaIni
'Detectamos el botón pulsado por el usuario
If .Show = -1 Then
'Asignamos a la función la carpeta seleccionada, convirtiéndola
'a un valor de tipo String
fncSelectCarpeta = CStr(.SelectedItems.Item(1))
Else
'Si se pulsa cancelar avisamos y salimos
MsgBox "Selección cancelada", vbExclamation, "CANCELADO"
Exit Function
End If
End With
Salida:
Exit Function
sol_err:
MsgBox "Se ha producido el error: " & Err.Number & " - " & Err.Description
Resume Salida
End Function

El codigo VB del boton Aceptar que utilice es el siguiente:

Private Sub Aceptar_Click()

Dim miRuta As String
Dim mensaje As String

mensaje = MsgBox("¿Desea bajar a su PC los reportes seleccionados? ", vbYesNo + vbQuestion, "Reporte de datos")
If mensaje = vbYes Then
Me.Paso.SetFocus

miRuta = fncSelectCarpeta()
If miRuta = "" Then Exit Sub

If R1 = 1 Then
DoCmd.OutputTo acOutputQuery, "CO-01 Reporte mensual enero", "Excel97-Excel2003Workbook(*.xls)", miRuta & "\" & "Reporte mensual enero.xls", False, "", , acExportQualityPrint
End If
If R2 = 1 Then
DoCmd.OutputTo acOutputQuery, "CO-02 Reporte mensual febrero", "Excel97-Excel2003Workbook(*.xls)", miRuta & "\" & "Reporte mensual febrero.xls", False, "", , acExportQualityPrint
End If
If R3 = 1 Then
DoCmd.OutputTo acOutputQuery, "CO-03 Reporte mensual marzo", "Excel97-Excel2003Workbook(*.xls)", miRuta & "\" & "Reporte mensual marzo.xls", False, "", , acExportQualityPrint
End If
If R4 = 1 Then
DoCmd.OutputTo acOutputQuery, "CO-04 Reporte mensual abril", "Excel97-Excel2003Workbook(*.xls)", miRuta & "\" & "Reporte mensual abril.xls", False, "", , acExportQualityPrint
End If
If R5 = 1 Then
DoCmd.OutputTo acOutputQuery, "CO-05 Reporte mensual mayo", "Excel97-Excel2003Workbook(*.xls)", miRuta & "\" & "Reporte mensual mayo.xls", False, "", , acExportQualityPrint
End If
If R6 = 1 Then
DoCmd.OutputTo acOutputQuery, "CO-06 Reporte mensual junio", "Excel97-Excel2003Workbook(*.xls)", miRuta & "\" & "Reporte mensual junio.xls", False, "", , acExportQualityPrint
End If
If R7 = 1 Then
DoCmd.OutputTo acOutputQuery, "CO-07 Reporte mensual julio", "Excel97-Excel2003Workbook(*.xls)", miRuta & "\" & "Reporte mensual julio.xls", False, "", , acExportQualityPrint
End If
If R8 = 1 Then
DoCmd.OutputTo acOutputQuery, "CO-08 Reporte mensual agosto", "Excel97-Excel2003Workbook(*.xls)", miRuta & "\" & "Reporte mensual agosto.xls", False, "", , acExportQualityPrint
End If
If R9 = 1 Then
DoCmd.OutputTo acOutputQuery, "CO-09 Reporte mensual septiembre", "Excel97-Excel2003Workbook(*.xls)", miRuta & "\" & "Reporte mensual septiembre.xls", False, "", , acExportQualityPrint
End If
If R10 = 1 Then
DoCmd.OutputTo acOutputQuery, "CO-10 Reporte mensual octubre", "Excel97-Excel2003Workbook(*.xls)", miRuta & "\" & "Reporte mensual octubre.xls", False, "", , acExportQualityPrint
End If
If R11 = 1 Then
DoCmd.OutputTo acOutputQuery, "CO-11 Reporte mensual noviembre", "Excel97-Excel2003Workbook(*.xls)", miRuta & "\" & "Reporte mensual noviembre.xls", False, "", , acExportQualityPrint
End If
If R12 = 1 Then
DoCmd.OutputTo acOutputQuery, "CO-12 Reporte mensual diciembre", "Excel97-Excel2003Workbook(*.xls)", miRuta & "\" & "Reporte mensual diciembre.xls", False, "", , acExportQualityPrint
End If
Mensaje4 = MsgBox("Se han exportado " & Me.Total & " archivos exitosamente. ", vbInformation, "Realizado")
DoCmd.Close

Else
Mensaje4 = MsgBox("La acción fue cancelada por el usuario. ", vbInformation, "Información")
DoCmd.Close
End If

End Sub

R1... R12 son controles del formulario que indican si se debe imprimir el reporte.

Me arroja el siguiente error:

Se ha producido el error: -2147467259 - Error en el método 'FileDialog' del objeto '_Application'

¿Podrían por favor indicarme donde esta el error o como puedo corregirlo?

Desde ya muy agradecido como siempre.

Jorge.

1 respuesta

Respuesta
2

Honestamente, no me he leído todo el código que escribiste, pero ¿has comprobado en el editor de VB en Herramientas-Referencias si tienes activada la librería Microsoft Office XX.0 Object Library?

Lo de XX es por la versión del Office que tengas, para el Office 16 es precisamente 16. Me parece que para el Office 2010 es 11.

En segundo lugar ¿Es exportar a Excel o imprimir varios informes?

Si es para enviar a Excel y quieres que te pregunte donde la guarda basta con no poner la ruta en la instrucción.

Buenos dias Icue: 

Si, efectivamente esta activada la librería que mencionas ya que por febrero del 2016 el Experto Sveinbjorn me mando este modulo.

Lo que pretendo hacer, como en aquella ocasión,  es Exportar a un Excel (coloque mal arriba) varias consultas a la vez seleccionando la ruta (una sola vez).

La diferencia es que esta vez suplante las casillas de verificación (V1, V2...) con cuadros de textos (R1 a R12),  donde,  si el valor del cuadro es 1 debería exportarse el reporte. (en el anterior era -1)

En aquel Access funciona perfecto pero en este me tira el error que describí al principio.

Si pudieras ayudarme te lo agradecería.

Saludos

Jorge

Crea una base de datos vacía e importa sólo el formulario y me la mandas a [email protected] y le echo un vistazo. Me sorprende porque ese error normalmente aparece cuando no encuentra esa librería.

Buenos días:

Te envié los datos que solicitaste la semana pasada pero no te puse comentario.

Vuelvo a reenviartela por las dudas.

Muchas gracias.

Jorge.

El día 30 te envié la solución, al día siguiente el servidor me la devolvió, la reenvié, me la devolvió, la volví a enviar esta vez comprimida. El problema lo tenías en que, digas lo que digas, en el editor de VB, en Referencias no tenías activada la librería Microsoft Office 16.0 Object Library.

Hoy la vuelvo a enviar

¡Gracias!

Recibí el archivo. Estaba bloqueado como no deseado.

Estabas en lo cierto. Me confíe por que es a nivel archivo y en el otro estaba activado.

Desde ya muchas gracias por tu paciencia!

Jorge

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas