elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Importar datos de una hoja de cálculo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Importar datos de una hoja de cálculo  (Leído 2,174 veces)
okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Importar datos de una hoja de cálculo
« en: 28 Enero 2015, 14:30 pm »

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"


Código
  1. Dim SheetName As String
  2. Dim RecSet As ADODB.Recordset
  3.  
  4.  
  5. 'Abre la hoja de cálculo 01.xls
  6. With CreateObject("ADOX.Catalog")
  7.    .ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" _
  8.                      & "c:\01.xls';" _
  9.                      & "Extended Properties='Excel 8.0;HDR=yes'"
  10.    SheetName = .Tables(0).Name
  11.    Set RecSet = New ADODB.Recordset
  12.    Set RecSet.ActiveConnection = .ActiveConnection
  13. End With
  14. RecSet.Open "[" & SheetName & "]", , adOpenForwardOnly, adLockReadOnly, adCmdTable
  15.  
  16.  
  17. 'Lee el archivo
  18. RecSet.MoveFirst ' Se coloca al principio
  19. RecSet.MoveNext
  20. Valor = CStr(RecSet.Fields(1)) 'Obtiene un valor fila:1 y columna:1
  21.  
  22. RecSet.Close
  23.  

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  :P.

Saludos


« Última modificación: 28 Enero 2015, 17:06 pm por okik » En línea

FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: Importar datos de una hoja de cálculo
« Respuesta #1 en: 28 Enero 2015, 15:49 pm »

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.

Código
  1. Ooption Explicit
  2. Dim NewDB As Database
  3. Dim NewTable As TableDef
  4. Dim DBName As String
  5. Dim dbnm As String
  6. Dim db As Database
  7. Dim rs As DAO.Recordset, nofld As Integer, norecd As Integer
  8. Dim J As Long
  9.  
  10.  
  11.      Set db = OpenDatabase(App.Path & "\DataAndStuff\" & dbnm)
  12.      Set rs = db.OpenRecordset("BDOfertas")
  13.      Do While Len(ExcelApp.ActiveSheet.Cells(i, 1).Value) <> 0
  14.         J = 1
  15.         rs.AddNew
  16.         Do While Len(ExcelApp.ActiveSheet.Cells(i, J).Value) <> 0
  17.            rs.Fields(J - 1).Value = ExcelApp.ActiveSheet.Cells(i, J).Value
  18.            J = J + 1
  19.         Loop
  20.         rs.Update
  21.         i = i + 1
  22.      Loop
  23.  


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 :P


En línea

Asdf debería ser algún tipo de función.
okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Importar datos de una hoja de cálculo
« Respuesta #2 en: 28 Enero 2015, 16:58 pm »


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 Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: Importar datos de una hoja de cálculo
« Respuesta #3 en: 29 Enero 2015, 06:14 am »

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 Desconectado

Mensajes: 1.674



Ver Perfil
Re: Importar datos de una hoja de cálculo
« Respuesta #4 en: 29 Enero 2015, 15:33 pm »

Hola.

Sin querer desviar el asunto principal del tema...

Citar
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_Where

Saludos.
« Última modificación: 29 Enero 2015, 15:37 pm por HdM » En línea

- Nice to see you again -
okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Importar datos de una hoja de cálculo
« Respuesta #5 en: 29 Enero 2015, 18:04 pm »

Veo que como yo, te has desesperado buscando...  :rolleyes:

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 Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: Importar datos de una hoja de cálculo
« Respuesta #6 en: 31 Enero 2015, 15:22 pm »

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_Where

Saludos.

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 Desconectado

Mensajes: 1.674



Ver Perfil
Re: Importar datos de una hoja de cálculo
« Respuesta #7 en: 31 Enero 2015, 16:05 pm »

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 -
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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 5,609 Último mensaje 25 Junio 2011, 22:44 pm
por mpaty
Hoja de calculo.
Dudas Generales
usuani 0 2,654 Último mensaje 8 Mayo 2010, 15:31 pm
por usuani
problemas con hoja de calculo openoffice
GNU/Linux
Katchick 2 3,146 Último mensaje 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 6,154 Último mensaje 22 Mayo 2013, 12:56 pm
por cbr20
Hoja de calculo
Desarrollo Web
HunterLuis 0 977 Último mensaje 8 Noviembre 2016, 04:00 am
por HunterLuis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines