Error para exportar datos o de access a tabla de excel
Hola Experto Ralvaradot buenos tardes, nuevamente molestándote con este proyecto de exportar ciertos datos de acrchivo de access a excel, en el correo pasado me indicaste que pusiera este código porque salio el error "424 se requiere objeto"
Te falta:
Dim Conex As ADODB.Connection
Antes de la linea que subrayste y colocaste en negrita.
El cual correji y quedo de esta manera:
Dim Conex As ADODB.Connection
Conex.Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ruta & "\" & basededatos)
Pero al momento de su ejecución me marca otro nuevo error de compilación "No se ha definido el tipo definido por el usuario" de favor me puedes apoyar, a continuación te transcribo el código (ojala y puedas, de favor revisarlo para ver si esta correcto y que no se presente otro error), en líneas abajo te indico el error en negritas, de antemano gracias.
Nota: En caso de requerir el archivo completo, para que hagas favor de revisar te lo envío por Winrar, de favor me indicas a que correo.
Sub ConectarAccess()
End Sub
Public Sub cmdConectarAccess()
Dim DBFullName As String
Dim Cnct As String, Src As String
Dim Conex As ADODB.Connection
Dim recSet As ADODB.Recordset
Dim strDB, strSQL As String
Dim strTabla As String
Dim IngTablas As Long
Dim i As Long
strDB = ThisWorkbook.Path & "\" & "AdministraciónCarterabd1.mdb"
' Nombre de los archivos de access
' construyo la primera cadena de la SELECT
strSQL = "SELECT NoControl, CréditoNo, Plazo" & _
"FROM 4FormularioResumenMinistraciónMensual ORDER BY NoControl"
xls.ActiveSheet.Range("A1:R26").Select
For Each Campo In rst.Fields
xls.ActiveSheet.Cells(3, 1) = Campo.NoControl
xls.ActiveSheet.Cells(3, 2) = Campo.CréditoNo
xls.ActiveSheet.Cells(3, 3) = Campo.Plazo
' construyo la segunda cadena de la SELECT
strSQL = "SELECT NoControl, CréditoNo, FechaInicial" & _
"FROM 3DetalleMinistración ORDER BY NoControl"
xls.ActiveSheet.Range("A1:R26").Select
rst.Fields
xls.ActiveSheet.Cells(3, 1) = Campo.NoControl
xls.ActiveSheet.Cells(3, 2) = Campo.CréditoNo
xls.ActiveSheet.Cells(3, 4) = Campo.FechaInicial
' construyo la tercera cadena de la SELECT
strSQL = "SELECT NoControl, CréditoNo, Mes" & _
"FROM 4ResumenMinistraciónMensual ORDER BY NoControl"
xls.ActiveSheet.Range("A1:R26").Select
rst.Fields
xls.ActiveSheet.Range("J3:J26") = Campo.ImporteMinistrado
' construyo la cuarta cadena de la SELECT
strSQL = "SELECT NoControl, CréditoNo, FechaInicial" & _
"FROM 3FormularioDetalleMinistración ORDER BY NoControl"
xls.ActiveSheet.Range("A1:R26").Select
rst.Fields
xls.ActiveSheet.Cells(3, 1) = Campo.NoControl
xls.ActiveSheet.Cells(3, 2) = Campo.CréditoNo
' construyo la quinta cadena de la SELECT
strSQL = "SELECT NoControl, CréditoNo, Mes" & _
"FROM 5FormularioResumenAmortizaciónMensual ORDER BY NoControl"
xls.ActiveSheet.Range("A1:R26").Select
rst.Fields
xls.ActiveSheet.Cells(3, 1) = Campo.NoControl
xls.ActiveSheet.Cells(3, 2) = Campo.CréditoNo
' construyo la sexta cadena de la SELECT
strSQL = "SELECT NoControl, CréditoNo, Mes" & _
"FROM 5ResumenAmortizaciónMensual ORDER BY NoControl"
xls.ActiveSheet.Range("A1:R26").Select
rst.ActiveSheet.Range("K3:K26") = Campo.ImportedelPago
' construyo la septima cadena de la SELECT
strSQL = "SELECT NoControl, CréditoNo" & _
"FROM 4FormularioDetalleAmortización ORDER BY NoControl"
xls.ActiveSheet.Range("A1:R26").Select
rst.Fields
xls.ActiveSheet.Cells(3, 1) = Campo.NoControl
xls.ActiveSheet.Cells(3, 2) = Campo.CréditoNo
' crear la conexión
Set Connection = New ADODB.Connection
Set recSet = New ADODB.Recordset
Connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source =" & strDB & ";"
End Sub
Sub ImportarAccess()
Dim ruta As String
Dim basededatos As String
' ruta
ruta = ThisWorkbook.Path
basededatos = " AdministraciónCarterabd1.mdb "
Dim Conex As ADODB.Connection
Conex.Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ruta & "\" & basededatos)
' abrir el libro Exportar a Excel
strLibro = CurrentProject.Path & "\TablaAmortización.xlsm"
xls.Workbooks.Open (strLibro)
' visible o no
xls.Visible = False ' o false
' activo la hoja de excel denominda "TablaAmortización"
xls.Worksheets("\TablaAmortización.xlsm").Activate
' consulta SQL
strSQL = "SELECT * FROM " & strTabla & ""
recSet.Open strSQL, Connection
' Copiar datos a la hoja
ActiveSheet.Cells(3, 1).CopyFromRecordset recSet
' Copiar rótulos
IngCampos = recSet.Fields.Count
For i = 0 To IngCampos - 1
ActiveSheet.Cells(1, i + 1).Value = recSet.Fields(i).Name
Next
End Sub
Sub DesconectarAccess()
' Desconectar
recSet.Close: Set recSet = Nothing
End Sub
1 respuesta
Respuesta de Roberto Alvarado
1