Error de Compilación Sub o Function

Recurro a ti para ver si puedes apoyarme, el problema es el siguiente, debo de aclarar que estoy aprendiendo a hacer códigos sé un poco de excel y de access, el presente código lo copie de todoexpertos y le hice algunas adecuaciones, pero no he podido hacer que se ejecute.
La rutina que debe de hacer es la de exportar datos de access a excel
Al momento de querer ejecutar un código para exportar datos de access a excel (datos específicos) me sale el siguiente error, Error de compilación: No se ha definido Sub o Function.
Transcribo parte del código:
Private Sub cmdIMPORTAR()
Dim rst AS DAO.Recordset
DimstrSQL As String
Dim strLibro As String
Dim xls As Object 'Excel.Application
' instancia de Excel
On Error GoTo cmdIMPORTAR _Tratamientos de Errores
Set xls = CreateObject("Excel.Application")
' abrir el libro ExportaraExcel
strLibro = CurrentProject.Path & "\TabAmort.xls.xls"
' visible o no
xls.Visible = False ' o false
' activo la Hoja 4 la hoja 4 se llama "TabAmort"
xls.Worksheets("TabAmort").Activate
' construyo la primera cadena de la SELECT
strSQL = "SELECT No de Control, Crédito No, Plazo "_
& "FROM 4 Formulario Resumen de Ministración Mensual ORDER BY No de Control"
' abro el recordset
Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
' si el recordset no está vacio
If Not RecordsetVacioDAO(rst) Then     (aquí marca el error de Compilación)
' borro el contenido
xls.ActiveSheet.Range("A1").Select
xls.Selection.CurrentRegion.Select
xls.Selection.Clear
'escribo el nombre de los campos empezando en A1
xls.ActiveSheet.Range("A1").Select
For Each Campo In rst.Fields
xls.ActiveSheet.Cells(3, 1) = Campo.No_de_Control
xls.ActiveSheet.Cells(3, 2) = Campo.Crédito_No
xls.ActiveSheet.Cells(3, 3) = Campo.Plazo
En total son 7 cadenas que construí, los datos a exportar son de access para una tabla de amortización de excel y lo deseo que cuando se exporte los datos la tabla automáticamente realice los cálculos, me han salido varios error como "la instrucción no es válida fuera del bloque Type", "No se ha definido el tipo definido por el usuario" dándose en Private Sub cmdIPORTAR()
Dim rst As DAO.Recordset
strSQL As String
Para lo cual añadí el termino Dim, y en referencias tilde Microsoft DAO 3.6 Object Library
pero como te digo sigue presentando error en su ejecución, si deseas que te envíe completo el código, me informas para hacerlo. Gracias.
Pd el sistema de mi maquina es:
Microsoft Window Xp
Profesional Versión 2002

1 respuesta

Respuesta
1
Revisa este código y modifícalo a tus necesidades.
Dim DBFullName As String
Dim Cnct As String, Src As String
Dim Connection As ADODB.Connection
Dim Recordset As ADODB.Recordset
Dim Col As Integer
Cells.Clear
MsgBox "Esta demo recupera los datos para los registros en que ITEM = LEASE y DIVISION = N. AMERICA."
' Información de la base de datos
DBFullName = ThisWorkbook.Path & "\budget.mdb"
' Abrir la conexión
Set Connection = New ADODB.Connection
Cnct = "Provider=Microsoft.Jet.OLEDB.4.0; "
Cnct = Cnct & "Data Source=" & DBFullName & ";"
Connection.Open ConnectionString:=Cnct
' Crear RecordSet
Set Recordset = New ADODB.Recordset
With Recordset
' Filtro
Src = "SELECT * FROM Budget WHERE Item = 'Lease' "
Src = Src & "and Division = 'N. America'"
.Open Source:=Src, ActiveConnection:=Connection
' Escribir los nombres de campo
For Col = 0 To Recordset.Fields.Count - 1
Range("A1").Offset(0, Col).Value = Recordset.Fields(Col).Name
Next
' Escribir el recordset
Range("A1").Offset(1, 0).CopyFromRecordset Recordset
End With
Set Recordset = Nothing
Connection.Close
Set Connection = Nothing
[email protected]
Gracias por responder muy pronto, por lo que entendí en tu respuesta es que debo de rehacer el código, ¿verdad?, y hacer los ajustes necesarios, bien es lo que voy a hacer.
¿Debo de cerrar la pregunta o bien debo primero de rehacer el código para ver como queda? De favor me puedes orientar, nuevamente gracias por tu tiempo y tus conocimientos.
La idea es que veas como se hacen las conexiones con ADO y modifiques tu código, o en caso muy estricto lo cambies.
[email protected]
Experto, buenos días.
Te informo que estoy cerrando la pregunta por que considero que no puede estar mucho tiempo abierta, pero voy a analizar el código e intentare hacer las modificaciones para que pueda ejecutarse, sé que me va a llevar tiempo ya que como te dije estoy aprendiendo, pero sé que con paciencia y tu apoyo lo voy a lograr, por lo que aprovecho para agradecerte nuevamente tu ayuda.
Espero encontrar la respuesta adecuada a mi planteamiento, y como tu dices ver como se hacen las conexiones con ADO, pero considero que en caso de duda puedo volverte a molestar y espero contar con tu apoyo. Gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas