Referencia para usar excel 2000

catty_peque
17 de Febrero del 2004
Hola a todos, tengo q exportar mis datos q se encuentran en una BD en access 2000 a excel, lo q sucede es que tengo un codigo q me ayuda a trabajarlo con acces 97 utilizando la sgte referencia... Microsoft Excel 9.0 Object Library, he intentado convertir mi BD a access 97 pero me sale errores de tipo de dato, entonces quisiera saber como puedo hacer para trabajar ese codigo con access 2000... muchas gracias....

Saludos

Catty

sdemingo
17 de Febrero del 2004
Hola,

en lugar de agregar la refrencia, hazlo así

Dim objExcel as Object
Set objExcel = CreateObject("Excel.Application")

SAlu2
sdemingo

catty_peque
17 de Febrero del 2004
Hola sdemingo, una consulta crees q te pueda enviar el codigo q tengo y me puedes decir como puedo usarlo con access 2000... te lo agradeceria muchisimo... por favor en caso q puedas, me das tu correo???
Saludos

Catty

sdemingo
17 de Febrero del 2004
Hola,

mejor pon aquí en el foro tu código por si el problema le afecta a alguien más que pueda beneficiarse también de la solución que te puedan brindar.

Salu2
sdemingo

catty_peque
17 de Febrero del 2004
Modulo

Public objExcel As Excel.Application

Public Function Inicio_Excel() As Boolean
Dim I As Integer
Dim J As Integer

Set objExcel = New Excel.Application

objExcel.Visible = True 'lo hacemos visible
objExcel.SheetsInNewWorkbook = 1 'decimos cuantas hojas queremos en el nuevo documento
objExcel.Workbooks.Add ' añadimos el objeto al workbook

End Function


Public Function Formato_Excel(Num_Campos As Integer, Nombre_Campos() As String) As Boolean

With objExcel.ActiveSheet

'Formato de las celdas de los titulos
.Range(.Cells(3, 1), .Cells(3, Num_Campos)).Borders.LineStyle = xlContinuous
.Range(.Cells(3, 1), .Cells(3, 8)).Font.Bold = True

For I = 1 To Num_Campos - 1 Step 1
.Cells(3, I) = Nombre_Campos(I)
Next I
'hasta aki pa colocar los titulos

'a partir de aki ta claro que es pa darle el ancho a las celdas ;-)

.Columns("A").ColumnWidth = 25
.Columns("B").ColumnWidth = 35
.Columns("C").ColumnWidth = 30
.Columns("D").ColumnWidth = 20
.Columns("E").ColumnWidth = 15
.Columns("F").ColumnWidth = 15
.Columns("G").ColumnWidth = 10
.Columns("H").ColumnWidth = 10

End With
End Function

Formulario

'Recordar que debes añadir la referencia llamada Microsoft Excel 9.0 Object Library
'SOLO SE PUEDE TRABAJAR CON BASES DE ACCESS 97

Option Explicit

Dim H As Integer
Dim V As Integer

Private Sub Command1_Click()


DataTabla.DatabaseName = App.Path & "db1_97.mdb"
DataTabla.RecordSource = "clientes"
DataTabla.Refresh


If Combo1.ListIndex = 0 Then

Dim Heading(8) As String 'aki vamos a guardar los nombres de los campos que despues pasamos a la funcion
Heading(0) = "Nombre"
Heading(1) = "Apellidos"
Heading(2) = "Direccion"
Heading(3) = "Poblacion"
Heading(4) = "Provincia"
Heading(5) = "Pais"
Heading(6) = "Telefono"
Heading(7) = "DNI"


Call Inicio_Excel 'Llamamos a la funcion que abre el workbook en excel
Call Formato_Excel(8, Heading()) 'llamamos a la funcion que da el formato al nuevo workbook

V = 5
H = 1

Do While Not DataTabla.Recordset.EOF 'esto nos sirve pa leer los datos desde
'la tabla de access para despues colocarlos en las celdas correspondientes
With DataTabla.Recordset
objExcel.ActiveSheet.Cells(V, H) = .Fields!nombre
objExcel.ActiveSheet.Cells(V, H + 1) = .Fields!apellidos
objExcel.ActiveSheet.Cells(V, H + 2) = .Fields!direccion
objExcel.ActiveSheet.Cells(V, H + 3) = .Fields!poblacion
objExcel.ActiveSheet.Cells(V, H + 4) = .Fields!provincia
objExcel.ActiveSheet.Cells(V, H + 5) = .Fields!pais
objExcel.ActiveSheet.Cells(V, H + 6) = .Fields!telefono
objExcel.ActiveSheet.Cells(V, H + 7) = .Fields!dni
V = V + 1
.MoveNext
End With
Loop
Set objExcel = Nothing 'una vez hemos terminado descargamos el objeto

End If
End Sub
Private Sub Form_Load()
'escribimos las opciones en el combo
Combo1.AddItem "Clientes", 0
Combo1.AddItem "Facturas", 1
Combo1.AddItem "Ocupacion", 2
End Sub
---------------------------------------

Este es el codigo original q encontre en una pagina web, no recuerdo la direccion, quiero aplicarlo a mi proyecto... peor este codigo solo trabaja con BD en access 97 y la mia esta en 2000, he tratado e hacerlo en 2000 pero sale error, si alguien supiera como hacerlo trabajar con BD en access 2000 se lo agradeceria muchisimo

Saludos

Catty

sdemingo
17 de Febrero del 2004
Trata de sustituir estas líneas de código

Public objExcel As Excel.Application
Set objExcel = New Excel.Application

por estas otras......

Public objExcel As Object
Set objExcel = CreateObject("Excel.Application")


Salu2
sdemingo

catty_peque
17 de Febrero del 2004
Ya lo hice, pero me sigue saliendo error al conectar la BD en access 2000, funciona normal con la BD en access 97....

sdemingo
17 de Febrero del 2004
Necesitas instalarte el MDAC, el Service Pack 5 para VB6 y asegurarte de tener instalado el motor de base de datos Microsoft.Jet.OLEDB.4.0

salu2
sdemingo

catty_peque
17 de Febrero del 2004
sale que no encuentra la BD dentro de la carpeta, sin embargo la BD esta ubicada alli... como hago para resolver este problema????

catty_peque
17 de Febrero del 2004
ya me puedo conectar con mi BD en access 2000, lo q sucede es q al poner el codigo donde lee los datos q se vana a agregar a la hoja de calculo sale error: variable de tipo object o la variable del bloque with no esta definida, y es en la parte del datatabla.recorset.recordcount... no entiendo xq... si sabes como puedo solucionarlo ... te agradesco mucho....

Saludos

Catty

catty_peque
17 de Febrero del 2004
si lo tengo, toda mi aplicacion trabaja con BD en access 2000, y el motor de datos es Microsoft.Jet.OLEDB.4.0

sbes como usar la propiedad... datatabla.recordset???
si tuvieras algun ejemplo te lo agradeceria mucho.-...

saludos

Catty

sdemingo
17 de Febrero del 2004
Data1.RecordSource="Select * From Tabla"
Data1.Refresh
If Data1.RecordSet.RecordCount <> 0 Then
Do While Not Data1.RecordSet.EOF
' Por cada vuelta de bucle un registro nuevo
MsgBox Data1.RecordSet.Fields(1).Value
Data1.RecordSet.MoveNext
Loop
End If

Salu2
sdemingo