Botón en Access para exportar una consulta a una serie de celdas en una hoja especifica de Excel

Buen día a todos los expertos y los no tanto como yo. Tengo un problema, su muy nuevo en esto del código VBA y estoy contruyendo un botón de comando que me ejecuta una consulta con el DoCmd.OpenQuery, y a su vez quiero que el mismo botón me exporte los datos generados de la consulta a una hoja especifica en un documento existente de Excel para después poder manipularlo. Este es el código que estoy usando, lo saque de internet después de una exhaustiva investigación, pero me marca error en la compilación, espero me puedan ayudar. Gracias de antemano.

rivate Sub Comando88_Click()

DoCmd.OpenQuery "ORDEN"

Sub ExportarAExcel(cadSQL As String, libro As String, hoja As String)

Dim appExcel As Object 'Excel.Application
Dim rst As Object 'DAO.Recordset
Dim fld As Object 'DAO.Field
Dim fila, filaini As Integer
Dim columna, columini As Integer

' abrimos excel, lo hacemos visible y abrimos el libro
' que nos interesa
Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = Visible
appExcel.Workbooks.Open FileName:=ORDEN_DE_PRESENTACION_prueba

' abrimos la tabla, consulta o cadena sql en un
' recordset
Set rst = CurrentDb.OpenRecordset(cadSQL)

'inicializamos la posicion dentro de la planilla excel.
'en este caso en la celda C5
filaini = 2
columini = 1

'inicializamos contadores de fila y columna
fila = filaini
columna = columini

' ponemos nombre a las columnas de la hojaigual que el
' nombre de los campos de la consulta
With appExcel.Sheets(hoja)
.Select
For Each fld In rst.Fields
.Cells(fila, columna) = fld.Name
columna = columna + 1
Next

' después traspasamos el valor de los campos a las
' celdas de la hoja de excel
fila = fila + 1 'inicializamos fila (aca comienzan
los datos)
columna = columini 'reinicializamos columna

While Not rst.EOF
For Each fld In rst.Fields
.Cells(fila, columna) = fld.Value
columna = columna + 1
Next
fila = fila + 1 'inicializamos fila para el
siguiente Recordset
columna = columini 'reinicializamos columna para el
siguiente Recordset
rst.MoveNext
Wend

'.Name = cadSQL

End Sub

Respuesta

Imagino que la primera parte:

rivate Sub Comando88_Click()

DoCmd. OpenQuery "ORDEN"

Es un error en el copy-paste, ya que "rivate" debiera ser "private", y no hay un "End sub" al final (en una línea tras el "DoCdm...").

Sobre el procedimiento ExportarAExcel tendría que probarlo pero a priori parece correcto con una excepción. Si inicias un bloque como "With appExcel.Sheets(hoja)", debes de cerrarlo poniendo "End With" en una línea antes del final "End Sub", ya que de otro modo nunca compilará el código (es como iniciar un bucle" Do Until" o de cualquier otro tipo y no finalizarlo en ese caso con un "Loop").

Cordiales saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas