Access - Exportar 2 tablas en dos hojas de Excel con ADO

 
Vista:
sin imagen de perfil

Exportar 2 tablas en dos hojas de Excel con ADO

Publicado por Percy (38 intervenciones) el 19/07/2013 08:27:56
Buenos días, por favor, necesito otra vez de su ayuda
Lo que estoy tratado de hacer es exportar dos tablas (clientes y proveedores).

Tengo el siguiente código; pero solo me exporta la tabla clientes mas no sé cómo hacer para que también me exporte la tabla proveedores en el mismo código, además necesito también los nombres de los campos de tabla y este código no lo exporta.

Private Sub cmdExportar1_Click()
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

Set xls = CreateObject("Excel.Application")

' con ella abro el libro ExportaraExcel
strLibro = CurrentProject.Path & "\ExportaraExcel.xls"
xls.Workbooks.Open (strLibro)

' lo hago visible o no
xls.Visible = True ' o false

' activo la Hoja 1
xls.Worksheets("Hoja1").Activate

' construyo la cadena de la SELECT
strSQL = "SELECT *" _
& "FROM Clientes "

' abro el recordset
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)

' si el recordset no está vacio
If Not RecordsetVacioDAO(rst) Then
' me posiciono en la celda en que depositaré los datos
xls.ActiveSheet.Range("A1").Select
' pego los datos (el recordset completo)
xls.ActiveCell.CopyFromRecordset rst
End If

' guardo los datos
xls.ActiveWorkbook.Save

' cierro excel
xls.Application.Quit
Set xls = Nothing

' cierro el recordset
CierraRecordsetDAO rst

cmdExportar1_Click_Salir:
On Error GoTo 0
Exit Sub

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 Sub ' cmdExportar1_Click



Vi en una página que para agregar los nombres de campos utilizaban este código.
'copiar rótulos
lngCampos = recSet.Fields.Count
For i = 0 To lngCampos - 1
ActiveSheet.Cells(1, i + 1).Value = recSet.Fields(i).Name
Next

Gracias por su atencion
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Exportar 2 tablas en dos hojas de Excel con ADO

Publicado por 2pl (461 intervenciones) el 19/07/2013 12:21:50
No entiendo ni una papa de ese codigo y creo que es mucho más facil utilizar una macro para exportar una tabla o una consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Exportar 2 tablas en dos hojas de Excel con ADO

Publicado por Percy (38 intervenciones) el 20/07/2013 12:03:08
Estimado 2pl, gracias por el interes.

Actualmete lo vengo haciendo con macro con una accion para exportar la tabla clientes y otra accion para exportar la tabla proveedores en un mismo archivo; pero me da un error 3434 para la accion importar exportar hoja de calculo, "no se puede expandir el intervalo con nombre."

me he dado cuenta que esto sucede toda vez que las hojas de destino de la exportacion estan con registros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Exportar 2 tablas en dos hojas de Excel con ADO

Publicado por jose (830 intervenciones) el 19/07/2013 12:25:55
SALUDOS PERCI

DOS SOLUCIONES :

1 VAS A LA TABLA de access -- recuadro de la parte superior izquierda (para seleccionar todos los registros ) - boton derecho del raton ---COPIAR
VA A EXCELL -- CASILLA A1 Y PEGAR

2 EN EL EVENTO AL HACER CLIC DE UN BOTON O ETIQUETA PONES EL SIGUIENTO CODIGO : SOLO TIENES QUE CAMBIAR EL NOMBRE DE LA TABLA
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Dim rst As DAO.Recordset, _
strSQL As String
 
Rem  pasa datos  a excell
Dim objExcel As Object
Dim libro As Object
 
Const xlHairline = 1
Const xlMedium = -4138
Const xlThick = 4
Const xlThin = 2
Const xlWBATWorksheet = -4167
 
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
Set libro = objExcel.Workbooks.Add
 
' creo un libro con una sola hoja
'libro.Workbooks.Add xlWBATWorksheet
strHoja = libro.ActiveSheet.Name
'libro.ActiveSheet.Name = "  "
 
REM    AQUI  SELECIONO LA TABLA  -------------------------************** CAMBIAR CLIENTES POR EL NOMBRE DE LA TABLA DESEADA .
 
' construyo la cadena de la SELECT
strSQL = "SELECT *" _
& "FROM [CLIENTES]   "
 
' abro el recordset
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
 
Rem  grabo  la cabecera -----------------------------
'copiar rótulos
lngCampos = rst.Fields.Count
For i = 0 To lngCampos - 1
libro.ActiveSheet.Cells(1, (i + 1)).Value = rst.Fields(i).Name
Next
Rem --------------------------------------------------------------------------
 
REM GRABAMOS LAS LINEAS DE LA TABLA ---------------------------
rst.MoveFirst
N = 2
' si el recordset no está vacio
 Do While rst.EOF = False
         lngCampos = rst.Fields.Count
                         For i = 0 To lngCampos - 1
                             libro.ActiveSheet.Cells(N, i + 1).Value = rst.Fields(i).Value
                         Next
rst.MoveNext
N = N + 1
Loop
REM -----------------------------------------------------------------------------------------------
 
 
rst.Close
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Exportar 2 tablas en dos hojas de Excel con ADO

Publicado por percy (1 intervención) el 20/07/2013 12:11:43
Jose, gracias por tu apoyo..

De las dos opciones que me brindas la 1 está descartada.

Y la 2da opción básicamente hace lo mismo que el código que yo he puesto solo que crea un archivo Excel y lo muestra para que uno decida guardarlo.

Lo que necesito es que estas dos tablas (cliente proveedor) se descarguen al hacer clic en el botón sin necesidad de editar el nombre de las tablas en el código.

La exportación debe de darse en un archivo específico en las hojas client y proveed respectivamente del archivo Excel, ya que posteriormente tengo tablas dinámicas y gráficos que usaran esta información.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Exportar 2 tablas en dos hojas de Excel con ADO

Publicado por jose (830 intervenciones) el 22/07/2013 00:25:48
tienes que agragar la referencia Microsoft Excel n.n desde projectos->referencias


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Dim objExcel As New Excel.Application
 
 
With objExcel
.Visible = True
 
.workbooks.Open "C:\Users\jo\Desktop\nombrefichero-excel.xls"
 
.workbooks(.workbooks.Count).sheets("nombre-tabla").select
 
'Agrego datos
.workbooks(.workbooks.Count).activesheet.cells(1, 1).Value = "1"
.workbooks(.workbooks.Count).activesheet.cells(1, 2).Value = "datos a grabar "
 
.workbooks(.workbooks.Count).Save
.workbooks(.workbooks.Count).Close
.Quit
End With
Set objExcel = Nothing
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar