Autor
|
Tema: Importar datos de una hoja de cálculo (Leído 3,566 veces)
|
okik
Desconectado
Mensajes: 462
|
Hola, Antes de nada decir que antes usaba VB6 y he empezado a programar recientemente en VB2010. Estoy transcribiendo un programa VB6 a VISUAL BASIC .NET 2010. No lo quiero convertir, puesto que quiero empezar desde el principio aprovechando las ventajas de vb2010. El programa creado con vb6, accedía a una hoja de cálculo Excel (*.xls) de la siguiente manera (simplificada): Importar referéncias: 'Microsoft DAO 3.51 Object Library" 'Microsoft ActiveX Data Objects 2.0 Library" Dim SheetName As String Dim RecSet As ADODB.Recordset 'Abre la hoja de cálculo 01.xls With CreateObject("ADOX.Catalog") .ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" _ & "c:\01.xls';" _ & "Extended Properties='Excel 8.0;HDR=yes'" SheetName = .Tables(0).Name Set RecSet = New ADODB.Recordset Set RecSet.ActiveConnection = .ActiveConnection End With RecSet.Open "[" & SheetName & "]", , adOpenForwardOnly, adLockReadOnly, adCmdTable 'Lee el archivo RecSet.MoveFirst ' Se coloca al principio RecSet.MoveNext Valor = CStr(RecSet.Fields(1)) 'Obtiene un valor fila:1 y columna:1 RecSet.Close
El caso es que llevo varios días buscando en la red y no consigo encontrar una forma clara de hacer lo mismo con vb2010. Porque yo no quiero acceder a todo el contenido, sino a una fila y columna concreta del archivo xls, según necesite. Otra cosa que se me ha ocurrido es leer todo y meterlo en un DataGridView, para luego acceder a los datos desde el DataGridView. Con los datos tengo que hacer cálculos matemáticos, por eso tengo que poder acceder a una información concreta de la tabla según necesite. Espero que alguien me pueda ayudar . Saludos
|
|
« Última modificación: 28 Enero 2015, 17:06 pm por okik »
|
En línea
|
|
|
|
FranciskoAsdf
Desconectado
Mensajes: 231
Ni bueno, ni malo. Solo nada.
|
Hola, Revisa este codigo, hace lo que necesitas, obviamente tienes que adaptarlo para ti, cambiando algunas variables y/o nombres de archivos. Debo recalcar que el formato de la hoja de Excel debe ser "plano"; cabeceras y datos. Ooption Explicit Dim NewDB As Database Dim NewTable As TableDef Dim DBName As String Dim dbnm As String Dim db As Database Dim rs As DAO.Recordset, nofld As Integer, norecd As Integer Dim J As Long Set db = OpenDatabase(App.Path & "\DataAndStuff\" & dbnm) Set rs = db.OpenRecordset("BDOfertas") Do While Len(ExcelApp.ActiveSheet.Cells(i, 1).Value) <> 0 J = 1 rs.AddNew Do While Len(ExcelApp.ActiveSheet.Cells(i, J).Value) <> 0 rs.Fields(J - 1).Value = ExcelApp.ActiveSheet.Cells(i, J).Value J = J + 1 Loop rs.Update i = i + 1 Loop
dbnm = nombre de tu base de datos. Debes crear una instancia para poder usar Excel. PD: Si hubieses usado la herramienta buscar, hubieses encontrado el post de inmediato, de hecho estaba 10 posts mas abajo que el tuyo
|
|
|
En línea
|
Asdf debería ser algún tipo de función.
|
|
|
okik
Desconectado
Mensajes: 462
|
Gracias por la respuesta FranciskoAsdf y no quiero ser quisquilloso... pero no es lo que busco.
El código que me has puesto es de Visual Basic 6.0 y como he explicado lo que quiero es hacerlo con Visual Basic 2010. Que creo que también se le suele llamar VB.Net 2010
la función: OpenDatabase, no lo reconoce VB2010, ya para empezar.
Y por último, este código que me das, si no me equivoco es para acceder a una base de de datos *.mdb y no *.xls. Lo digo porque lo he probado en VB6 y me da error 3343, "No se reconoce el formato de base de datos..."
Saludos
|
|
|
En línea
|
|
|
|
FranciskoAsdf
Desconectado
Mensajes: 231
Ni bueno, ni malo. Solo nada.
|
hola, pucha, aunque no te sirva, puedes tomar la idea de ahí.
Lo que hace el código es leer y tomar los datos de un archivo .xls e insertarlos de forma ordenada en una base de datos .mdb. El problema 3343 es porque el formato de tu base de datos es superior al que puede procesar DAO (o ADO? xD) y es que tiene que estar en formado Office 97, desde 2000 para arriba te dará el mismo error. Busqué incansablemente como hacerlo funcionar con bases de datos mas nuevas, pero no hubo caso.
Saludos!
|
|
|
En línea
|
Asdf debería ser algún tipo de función.
|
|
|
HdM
Desconectado
Mensajes: 1.674
|
Hola. Sin querer desviar el asunto principal del tema... tiene que estar en formado Office 97, desde 2000 para arriba te dará el mismo error. Busqué incansablemente como hacerlo funcionar con bases de datos mas nuevas, pero no hubo caso. Utilizando los componentes de acceso a datos correctos, puedes acceder a cualquier db Access, independientemente del formato, vía DAO. Motor JET *Microsoft DAO 3.6 Object Library ->Formato 97-2k-2k3 Motor ACE *Microsoft office 14.0 access database engine object library ->Formato 97-2k-2k3-2k7-2k10 *Microsoft office 15.0 access database engine object library ( A partir de W7) ->Formato 2k7-2k10-2k13 https://msdn.microsoft.com/es-es/library/office/ff965871%28v=office.14%29.aspx#DataProgrammingWithAccess2010_WhereSaludos.
|
|
« Última modificación: 29 Enero 2015, 15:37 pm por HdM »
|
En línea
|
- Nice to see you again -
|
|
|
okik
Desconectado
Mensajes: 462
|
Veo que como yo, te has desesperado buscando... Al final lo que voy ha hacer es crear un DataGridView, y cargar los datos en el mismo, ademas de poder modificarlos poder crear otro archivo excel o podificar el original
|
|
« Última modificación: 29 Enero 2015, 18:56 pm por okik »
|
En línea
|
|
|
|
FranciskoAsdf
Desconectado
Mensajes: 231
Ni bueno, ni malo. Solo nada.
|
Hola. Sin querer desviar el asunto principal del tema... Utilizando los componentes de acceso a datos correctos, puedes acceder a cualquier db Access, independientemente del formato, vía DAO. Motor JET *Microsoft DAO 3.6 Object Library ->Formato 97-2k-2k3 Motor ACE *Microsoft office 14.0 access database engine object library ->Formato 97-2k-2k3-2k7-2k10 *Microsoft office 15.0 access database engine object library ( A partir de W7) ->Formato 2k7-2k10-2k13 https://msdn.microsoft.com/es-es/library/office/ff965871%28v=office.14%29.aspx#DataProgrammingWithAccess2010_WhereSaludos. Si probé cambiando los motores, pero tampoco funcionó. Siempre obtuve el mismo mensaje "No se reconoce formato de la base de datos..." cuando digo "incansablemente", es porque en realidad si busqué mucho xD Saludos, gracias por el articulo, lo leeré de igual manera.
|
|
|
En línea
|
Asdf debería ser algún tipo de función.
|
|
|
HdM
Desconectado
Mensajes: 1.674
|
Hola.
No dudo de que hayas buscado mucho, pero ya te digo yo que no deberías tener ningún problema. Más que nada, debido a que tuve en su día que hacer la migración en varias ocasiones, sin ninguna complicación.
Los problemas que comentas, te surgirían si utilizas el control "data" (desaconsejado) que sólo te permitirán atacar hasta db 2K3, siempre que tengas el último SP de vb6.
Saludos.
|
|
|
En línea
|
- Nice to see you again -
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Exportar datos de ListView a la Hoja de Calculo OpenOffice
Programación Visual Basic
|
jack06
|
4
|
6,677
|
25 Junio 2011, 22:44 pm
por mpaty
|
|
|
Hoja de calculo.
Dudas Generales
|
usuani
|
0
|
3,686
|
8 Mayo 2010, 15:31 pm
por usuani
|
|
|
problemas con hoja de calculo openoffice
GNU/Linux
|
Katchick
|
2
|
4,254
|
25 Abril 2011, 20:41 pm
por Katchick
|
|
|
Como importar datos de una hoja de calculo excel a una BD sql
Programación Visual Basic
|
cbr20
|
7
|
8,107
|
22 Mayo 2013, 12:56 pm
por cbr20
|
|
|
Hoja de calculo
Desarrollo Web
|
HunterLuis
|
0
|
1,918
|
8 Noviembre 2016, 04:00 am
por HunterLuis
|
|