Unir bases access y transferir todo a excel

Hola, te molesto para saber si me podrías ayudar con un problema que tengo y no sé como resolver. La cuestión es así: el sistema lo utilizo para hacer carga de datos remotos, hay varias máquinas dedicadas a cargar. Cada una de estas envía un archivo con tablas vinculadas a la bd principal. Las bases que se envían con la información tienen 3 tablas: "Profesionales", "Lugar_atencion" y "beneficiarios". Mi idea sería que de todas las bases que lleguen (serán unas 5 o 6) pueda conformar una sola base con las mismas tres tablas.
La siguiente búsqueda, sería poder exportar el contenido de esas 3 tablas a una planilla excel. Mediante consulta, unifico las tablas, lo que me falta es saber como poder exportar mediante un botón esa consulta a una planilla excel. Lo que hice pero no me funcionó fue hacer una macro con acción transferirHojadeCalculo, pero no pude hacer que se exportara a una planilla excel.
Espero haber sido claro, agradezco desde ya tu tiempo.
Saludos!

1 respuesta

Respuesta
1
Lo de unir las tablas creo que lo tienes claro código con el que puedes exportar a una plantilla de excel.
Copias y pegas este código en un modulo y podrás exportar los datos a excel
Nota: antes debes activar la Librería Microsoft Excel X. ("X es la version de excel")
Espero te sirva, me avisas o si no te mando un ejemplo...
Para este caso la plantilla de excel le doy el nombre PLANTILLA CIRCU55.XLS
Public Function ExportarExcel()
Dim rst As DAO.Recordset, _
    strSQL As String, _
    strLibro As String, _
    xls As Object ' Excel.Application
' abro una instancia de Excel
On Error GoTo cmdExportar1_Click_TratamientoErrores
If Len(Dir(CurrentProject.Path & "\Plantillas\PLANTILLA CIRCU55.XLS")) <> 0 Then
If Len(Dir(CurrentProject.Path & "\PLANTILLA CIRCU55.xls")) > 0 Then Kill CurrentProject.Path & "\PLANTILLA CIRCU55.xls"
FileCopy CurrentProject.Path & "\Plantillas\PLANTILLA CIRCU55.xls", CurrentProject.Path & "\PLANTILLA CIRCU55.xls"
End If
Set xls = CreateObject("Excel.Application")
' con ella abro el libro ExportaraExcel
strLibro = CurrentProject.Path & "\PLANTILLA CIRCU55.xls"
xls.Workbooks.Open (strLibro)
' lo hago visible o no
xls.Visible = False ' o false
' activo la Hoja 1
xls.Worksheets("F-06-037 REPORTE FACTURAS").Activate
' construyo la cadena de la SELECT
strSQL = "SELECT * FROM COMPARACION 1 ORDER BY NUMERO_FACTURA"
' abro el recordset
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
' si el recordset no está vacio
If rst.RecordCount > 0 Then
'Activo el Rango para pegar los datos
    xls.ActiveSheet.Range("C22").Select
    ' pego los datos (el recordset completo)
    xls.ActiveCell.CopyFromRecordset rst
End If
' guardo los datos
xls.ActiveWorkbook.Save
' cierro excel
'xls.Application.Quit
'Lo hago visible
xls.Visible = True
Set xls = Nothing
' cierro el recordset
rst.Close
cmdExportar1_Click_Salir:
   On Error GoTo 0
    Exit Function
cmdExportar1_Click_TratamientoErrores:
    MsgBox "Error " & Err.Number & " en proc. cmdExportar1_Click de Documento VBA Form_frmExportaraExcel (" & Err.Description & ")", vbOKOnly + vbCritical
    GoTo cmdExportar1_Click_Salir
End Function    ' cmdExportar1_Click
Public Function ExportarExcel()
Dim rst As DAO.Recordset, _    strSQL As String, _    strLibro As String, _    xls As Object ' Excel.Application    ' abro una instancia de ExcelOn Error GoTo cmdExportar1_Click_TratamientoErrores
If Len(Dir(CurrentProject.Path & "\Plantillas\PLANTILLA CIRCU55.XLS")) <> 0 Then
If Len(Dir(CurrentProject.Path & "\PLANTILLA CIRCU55.xls")) > 0 Then Kill CurrentProject.Path & "\PLANTILLA CIRCU55.xls"
FileCopy CurrentProject.Path & "\Plantillas\PLANTILLA CIRCU55.xls", CurrentProject.Path & "\PLANTILLA CIRCU55.xls"
End If
Set xls = CreateObject("Excel.Application")
' con ella abro el libro ExportaraExcelstrLibro = CurrentProject.Path & "\PLANTILLA CIRCU55.xls"xls.Workbooks.Open (strLibro)
' lo hago visible o noxls.Visible = False ' o false
' activo la Hoja 1xls.Worksheets("F-06-037 REPORTE FACTURAS").Activate
' construyo la cadena de la SELECTstrSQL = "SELECT * FROM COMPARACION_1 ORDER BY NUMERO_FACTURA"
' abro el recordsetSet rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
' si el recordset no está vacioIf rst.RecordCount > 0 Then
'Establezco el nombre de la Ips prestadora
Dim PRESTADOR As String
PRESTADOR = DLookup("RAZON_SOCIAL", "AF")    ' me posiciono en la celda en que depositaré los datos    xls.ActiveSheet.Range("F18").Select    xls.ActiveCell.Value = PRESTADOR
'Finalizo con la Ips 'Activo el Rango para pegar los datos
    xls.ActiveSheet.Range("C22").Select    ' pego los datos (el recordset completo)    xls.ActiveCell.CopyFromRecordset rstEnd If
' guardo los datosxls.ActiveWorkbook.Save
' cierro excel'xls.Application.Quit
'Lo hago visiblexls.Visible = True
Set xls = Nothing
' cierro el recordsetrst.Close
cmdExportar1_Click_Salir:   On Error GoTo 0    Exit Function   cmdExportar1_Click_TratamientoErrores:
    MsgBox "Error " & Err.Number & " en proc. cmdExportar1_Click de Documento VBA Form_frmExportaraExcel (" & Err.Description & ")", vbOKOnly + vbCritical    GoTo cmdExportar1_Click_Salir
End Function    ' cmdExportar1_Click

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas