Problema con exportacion a excel
Publicado por Esteban Suarez (10 intervenciones) el 17/03/2009 16:37:45
Buenas. Mi inquietud es la siguiente: tengo un aplicativo hecho en access con un formulario donde esta un boton de comando denominado historico de saldos, en el evento "al hacer clic" llamo una funcion denominada exportar saldos que es la siguiente:
Function EXPORTAR_SALDOS()
On Error GoTo EXPORTAR_SALDOS_Err
Dim excelapp As Object
DoCmd.OutputTo acOutputQuery, "Saldos_Informe", "Excel97-Excel2003Workbook(*.xls)", _
"X:EXTRACTOSINFORMESSALDOS NUEVO.XLS", False, "", 0, acExportQualityPrint
Set excelapp = CreateObject("Excel.Application")
With excelapp
.workbooks.Open "X:EXTRACTOSINFORMESSALDOS NUEVO.XLS"
.workbooks.Open "X:ExtractosTABLAS DE ACTUALIZACION.xls"
.Run "'TABLAS DE ACTUALIZACION.xls'!historico_saldos_nuevo"
End With
EXPORTAR_SALDOS_Exit:
Do While Not (excelapp.activeworkbook Is Nothing)
excelapp.Quit
Loop
MsgBox "Se exporto la consulta satisfactoriamente."
Exit Function
EXPORTAR_SALDOS_Err:
Do While Not (excelapp.activeworkbook Is Nothing)
excelapp.Quit
Loop
MsgBox "No se pudo exportar la consulta."
Resume EXPORTAR_SALDOS_Exit
End Function
Como se puede observar, primero exporto una consulta y luego creo un objeto de excel para abrir dos archivos y luego ejecutar una macro "historico_saldos_nuevo" perteneciente al archivo TABLAS DE ACTUALIZACION.Dicha macro y los procedimientos que invoca son los siguientes:
Option Explicit
Option Base 1
Const archivo = "INFORME DE SALDOS NUEVO.xls"
Const path = "X:ExtractosInformes"
Sub historico_saldos_nuevo()
On Error GoTo historico_saldos_nuevo_fin
Sheets("HIST_SALDOS_NUEVO").Activate
ActiveSheet.PivotTables("Tabla dinámica1").PivotCache.Refresh
Call copiar_hojas_nuevo
Call guardar_reporte_nuevo
historico_saldos_nuevo_fin:
Application.Calculation = xlCalculationAutomatic
Application.CutCopyMode = False
Workbooks("TABLAS DE ACTUALIZACION.xls").Save
End Sub
Sub copiar_hojas_nuevo()
'Realiza una copia de las hojas del libro y las copia en uno nuevo para generar el reporte de valoracion.
Sheets("HIST_SALDOS_NUEVO").Copy
Call quitar_formulas("HIST_SALDOS_NUEVO")
End Sub
Sub guardar_reporte_nuevo()
'Guarda el nuevo archivo en la carpeta de informes.
Application.CutCopyMode = False
ActiveWorkbook.Close SaveChanges:=True, Filename:=path & archivo
End Sub
Sub quitar_formulas(hoja As String)
'Selecciona toda la hoja y pega las celdas como valores.
Sheets(hoja).Activate
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Range("a1").Select
End Sub
Esta macro copia solo los valores de la hoja HIST_SALDOS_NUEVO a una hoja con el mismo nombre pero en el nuevo archivo que se crea, INFORME DE SALDOS NUEVO.xls. Por ultimo la aplicaion esta dividida, tablas en servidor y formularios y demas como en una especie de archivo cliente en varios hosts. El problema que estoy teniendo es que al pulsar el boton historico de saldos, exporta la consulta bien pero luego se bloquea al momento de ejecutar la macro y me toca finalizar tanto la aplicaion como el proceso de excel que ha creado. He intentado reemplazando
Sheets("HIST_SALDOS_NUEVO").Activate
ActiveSheet.PivotTables("Tabla dinámica1").PivotCache.Refresh, por ActiveSheet.Refresh y no se bloquea pero no crea el archivo INFORME DE SALDOS NUEVO.xls.
AGradezco de antemano al o los interesados en solucionar mi inquietud
Function EXPORTAR_SALDOS()
On Error GoTo EXPORTAR_SALDOS_Err
Dim excelapp As Object
DoCmd.OutputTo acOutputQuery, "Saldos_Informe", "Excel97-Excel2003Workbook(*.xls)", _
"X:EXTRACTOSINFORMESSALDOS NUEVO.XLS", False, "", 0, acExportQualityPrint
Set excelapp = CreateObject("Excel.Application")
With excelapp
.workbooks.Open "X:EXTRACTOSINFORMESSALDOS NUEVO.XLS"
.workbooks.Open "X:ExtractosTABLAS DE ACTUALIZACION.xls"
.Run "'TABLAS DE ACTUALIZACION.xls'!historico_saldos_nuevo"
End With
EXPORTAR_SALDOS_Exit:
Do While Not (excelapp.activeworkbook Is Nothing)
excelapp.Quit
Loop
MsgBox "Se exporto la consulta satisfactoriamente."
Exit Function
EXPORTAR_SALDOS_Err:
Do While Not (excelapp.activeworkbook Is Nothing)
excelapp.Quit
Loop
MsgBox "No se pudo exportar la consulta."
Resume EXPORTAR_SALDOS_Exit
End Function
Como se puede observar, primero exporto una consulta y luego creo un objeto de excel para abrir dos archivos y luego ejecutar una macro "historico_saldos_nuevo" perteneciente al archivo TABLAS DE ACTUALIZACION.Dicha macro y los procedimientos que invoca son los siguientes:
Option Explicit
Option Base 1
Const archivo = "INFORME DE SALDOS NUEVO.xls"
Const path = "X:ExtractosInformes"
Sub historico_saldos_nuevo()
On Error GoTo historico_saldos_nuevo_fin
Sheets("HIST_SALDOS_NUEVO").Activate
ActiveSheet.PivotTables("Tabla dinámica1").PivotCache.Refresh
Call copiar_hojas_nuevo
Call guardar_reporte_nuevo
historico_saldos_nuevo_fin:
Application.Calculation = xlCalculationAutomatic
Application.CutCopyMode = False
Workbooks("TABLAS DE ACTUALIZACION.xls").Save
End Sub
Sub copiar_hojas_nuevo()
'Realiza una copia de las hojas del libro y las copia en uno nuevo para generar el reporte de valoracion.
Sheets("HIST_SALDOS_NUEVO").Copy
Call quitar_formulas("HIST_SALDOS_NUEVO")
End Sub
Sub guardar_reporte_nuevo()
'Guarda el nuevo archivo en la carpeta de informes.
Application.CutCopyMode = False
ActiveWorkbook.Close SaveChanges:=True, Filename:=path & archivo
End Sub
Sub quitar_formulas(hoja As String)
'Selecciona toda la hoja y pega las celdas como valores.
Sheets(hoja).Activate
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Range("a1").Select
End Sub
Esta macro copia solo los valores de la hoja HIST_SALDOS_NUEVO a una hoja con el mismo nombre pero en el nuevo archivo que se crea, INFORME DE SALDOS NUEVO.xls. Por ultimo la aplicaion esta dividida, tablas en servidor y formularios y demas como en una especie de archivo cliente en varios hosts. El problema que estoy teniendo es que al pulsar el boton historico de saldos, exporta la consulta bien pero luego se bloquea al momento de ejecutar la macro y me toca finalizar tanto la aplicaion como el proceso de excel que ha creado. He intentado reemplazando
Sheets("HIST_SALDOS_NUEVO").Activate
ActiveSheet.PivotTables("Tabla dinámica1").PivotCache.Refresh, por ActiveSheet.Refresh y no se bloquea pero no crea el archivo INFORME DE SALDOS NUEVO.xls.
AGradezco de antemano al o los interesados en solucionar mi inquietud
Valora esta pregunta


0