Exportar de Access a Excel, ayuda

Hola,
Quería hacerte una consulta para exportar de Access a Excel, encontré un código que me ayudo mucho, es el código entregado rodolfo1245, pero necesito hacer unas modificaciones que me tienen un poco complicado. El código es el siguiente:
Private Sub Comando0_Click()
Dim H As Long 'Horizontal
Dim V As Long 'Vertical
Dim MiBase As Database
Dim MiTabla As Recordset
On Error GoTo ErrorExcel
Dim objExcel As Excel.Application
Set MiBase = OpenDatabase("bd1.mdb")
Set MiTabla = MiBase.OpenRecordset("SELECT * FROM Tabla1, tabla2 WHERE tabla1.ID=tabla2.ID_1", dbOpenDynaset)
If MiTabla.RecordCount = 0 Then
MsgBox "La base de datos esta vacia"
Exit Sub
End If
Set objExcel = New Excel.Application
objExcel.Visible = True
objExcel.SheetsInNewWorkbook = 1
objExcel.Workbooks.Add
With objExcel.ActiveSheet
.Range(.Cells(1, 1), .Cells(1, 4)).Borders.LineStyle = xlContinuous
.Cells(3, 1) = "NOMBRE"
.Cells(3, 2) = "DIRECCION"
.Cells(3, 3) = "SERVICIO"
.Cells(3, 4) = "CANTIDAD"
.Range(.Cells(3, 1), .Cells(3, 4)).Font.Bold = True
.Columns("D").HorizontalAlignment = xlHAlignRight
.Columns("A").ColumnWidth = 15
.Columns("B").ColumnWidth = 30
.Columns("C").ColumnWidth = 30
.Columns("D").ColumnWidth = 15
End With
objExcel.ActiveSheet.Cells(1, 1) = "Inversión Planta Externa"
objExcel.ActiveSheet.Range(objExcel.ActiveSheet.Cells(1, 1), objExcel.ActiveSheet.Cells(1, 4)).HorizontalAlignment = xlHAlignCenterAcrossSelection
With objExcel.ActiveSheet.Cells(1, 1).Font
.Color = vbRed
.Size = 14
.Bold = True
End With
H = 4
V = 1
Do While Not MiTabla.EOF
DoEvents
objExcel.ActiveSheet.Cells(H, V) = MiTabla.Fields!ID_CLIENTE
objExcel.ActiveSheet.Cells(H, V + 1) = MiTabla.Fields!DIRECCION
objExcel.ActiveSheet.Cells(H, V + 2) = MiTabla.Fields!SERVICIO
objExcel.ActiveSheet.Cells(H, V + 3) = MiTabla.Fields!CANTIDAD
H = H + 1
MiTabla.MoveNext
Loop
MiBase.Close
Set objExcel = Nothing
Exit Sub
ErrorExcel:
MsgBox "Ha ocurrido un error de conexión con Excel." _
& Chr(13) & Chr(13) & "Error : " & Err.Number _
& Chr(13) & "Info : " & Err.Description _
& Chr(13) & "Objeto : " & Err.Source _
End Sub
Lo que necesito hacer es que exporte solo los datos del formulario activo (no se si me explico muy bien en esto, pero me refiero al formulario con los datos que se están viendo en ese momento).
Además mi base en access tiene 3 tablas donde las relaciones son algo así: Tabla1 con Tabla2 y Tabla1 con Tabla3.
Pude hacer que al exportar lo haga con datos de la tabla1 con tabla2 modificándolo como aparece en el código, pero necesito que en la misma hoja de excel donde me exporto estos datos, haga lo mismo (más abajo en la hoja excel) pero ahora con los datos de la tabla1 con Tabla3.
Espero haber explicado bien el problema y ojala puedas ayudarme.

1 respuesta

1
Respuesta de
Hola Kayser
Te paso un esquema de trabajo. Con este esquema podes guardar lo que quieras del formulario copiando campo por campo.
Dim strLibro as string
' abro una instancia de Excel
Set xls = CreateObject("Excel.Application")
' con ella abro el libro ExportaraExcel
strLibro = CurrentProject.Path & "\PadronMasculino.xls"
xls.Workbooks.Open (strLibro)
' lo hago visible o no
xls.Visible = False ' o false
' activo la Hoja 2 en mi caso la hoja se llama "Masc 1"
xls.Worksheets("Masc 1").Activate
'Supongo que los campos a grabar son Campo1 y Campo2
'Copio Campo1 a la celda de la fila1 y columna1 (fila1 y columna2 son vaiables que tienen el número de fila y columna respectivamente
xls.ActiveSheet.Cells(fila1, columna1) = Campo1
'Copio Campo2 a la celda C2 (fila=2, columna C)
xls.ActiveSheet.Cells(2, 3) = Campo2
y así copio dato por dato en la celda que quiero y en la hoja que quiero
para terminar
' guardo los datos
xls.ActiveWorkbook.Save
' cierro excel
xls.Application.Quit
Set xls = Nothing
Siempre repetí los pasos:
1)
Abro una instancia de Excel
Con ella abro el libro
Lo hago visible o no
2) Seleccionar la hoja de Excel
3) Por cada campo asignás el dato a la celda
Los pasos 2 y 3 tantas veces como quieras para distintas hojas
4) Para terminar
Guardar los datos y cerrar excel
Si lo necesitás te puedo ir acompañando paso a paso en la construcción de tu solución.
La que dí no es la única forma. Explicaste muy bien la parte de Access pero no dijiste cómo querías los datos en excel.
Por ejemplo es posible mandar una tabla o una consulta enteritas a excel. De otro modo. Avisame si te interesa.
Cordialmente, Marciana
Añade un comentario a esta respuesta
Añade tu respuesta
Haz clic para o
Escribe tu mensaje