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 de Orley Palma Renteria
1
1
Orley Palma Renteria, Tec. Redes de PC, Mantenimento y reparación de computadores,...
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