Exportar registros de Access a Excel mediante código VBA

Llevo días intentando intentando crear un código donde pueda exportar 2 consultas SQL a excel, lo he logrado hacer pero de forma individual una tabla por libro. Pero lo que necesito es exportar las 2 consultas en un solo libro y creando 2 hojas para cada una de ellas.

Y la otra es uniendo las 2 consultas en una sola hoja, estableciendo los nombres del encabezado.

Esta son las 2 consultas SQL que necesito exportar.

Call BD_Principal
Set Rg = New ADODB.Recordset
Rg.Open "SELECT * FROM TB_Principal WHERE FECHA_ENVIO BETWEEN #" & TextBox84.Text & "# AND #" & Label411.Caption & "# ORDER BY FECHA_ENVIO ASC", miConexion, adOpenKeyset, adLockOptimistic, adCmdText
Call BD_Principal
Set Rs = New ADODB.Recordset
Rs.Open "SELECT * FROM TB_Gestionando WHERE FECHA_ENVIO BETWEEN #" & TextBox84.Text & "# AND #" & Label411.Caption & "# ORDER BY FECHA_ENVIO ASC", miConexion, adOpenKeyset, adLockOptimistic, adCmdText

Comparto el código que de momento me funciona para exportar una consulta.

Set APIExcel = CreateObject("Excel.Application")
Set AddLibro = APIExcel.Workbooks.Add
APIExcel.Visible = False
Set AddHoja = AddLibro.Worksheets(1)
If Len(Hoja_1) > 0 Then AddHoja.Name = Left(Hoja_1, 30)
columnas = Rg.Fields.Count
For I = 0 To columnas - 1
APIExcel.Sheets(1).Cells(1, I + 1) = Rg.Fields(I).Name
Next I
Rg. MoveFirst
AddHoja. Range("A2"). CopyFromRecordset Rg

Agradecería la ayuda.

Hice esta misma pregunta aquí: Exportar datos de Access a Excel mediante código VBA. Pero no pude solucionarlo, no me funciono.

1 respuesta

Respuesta
1

[Hola

Por lo visto estás usando la misma macro para enviar a Excel y he ahí, al menos aparentemente, el dilema ya que cada vez, por lo que se ve, creas un nuevo libro de Excel en lugar de trabajar con el mismo. Para que no modifiques tanto código yo sugiero usar dos recordset, "llenarlos" y ahí recién crear el libro y en el creas una hoja para el primero

Set AddHoja = AddLibro.Worksheets(1)

y otra para el segundo

Set AddHoja = AddLibro.Worksheets(2)

y repites código pero obvio cada uno con la variable del Recordset respectivo

Abraham Valencia

PD: Yo lo haría distinto pero creo que como te lo he explicado no te complicarás tanto.

He estado haciendo más intentos, pero no he logrado que funcione.

Aveces me sale error fuera de indice.

¿Es posible que coloques todo en un "drive" para poder verlo?

Abraham Valencia

PD: Borrando lo que no necesitamos ver, obviamente

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas