SoloCodigo

Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: barri en Lunes 31 de Octubre de 2005, 20:50

Título: Consultas A Excel
Publicado por: barri en Lunes 31 de Octubre de 2005, 20:50
Hola peña,

necesito obtener datos de una hoja excel. Hice el odbc, he abierto la conexion y cuando quiero volcar a un registro una consulta con un command no se como llamar a la tabla y al campo que quiero consultar, ademas ambos tienen tildes, he probado y me dice que no encuentra el objeto correspondiente a la tabla que intento acceder (si la tabla es artículos dice que no encuentra artículos). ¿Como se consulta a excel?
Muchas gracias de antemano.

Salu2.
Título: Re: Consultas A Excel
Publicado por: patitofeo en Lunes 14 de Noviembre de 2005, 17:33
¿No estarás confundiendo Excel con Access?
Título: Re: Consultas A Excel
Publicado por: barri en Martes 15 de Noviembre de 2005, 09:16
jaja, no, se puede crear un ODBC para excel y tratarlo desde Visual Basic con consultas SQL y tambien se puede acceder sin ODBC con otros metodos de creacion de objetos excel. Ya me dijeron y puedo acceder sin problemas.
Salu2.
Título: Re: Consultas A Excel
Publicado por: patitofeo en Martes 15 de Noviembre de 2005, 19:29
No conocia esa caracteristica de Excel.

¿Las tablas de Excel pueden verse como Bases de Datos y tratarlas con ODBC?

que curioso, ¿Tienes algo de documentacion sobre esto? ¿alguna pagina o algo asi? ¿la ayuda de Excel?

Creo q mirare un poco

Saludos
Título: Re: Consultas A Excel
Publicado por: barri en Jueves 17 de Noviembre de 2005, 10:45
Lo primero que tienes que hacer es agregar la referencia a excel en tu proyecto (Proyecto -> Referencias... -> Microsoft Excel)


Una forma que me dijeron es:


Dim mixl As Object
Set mixl = CreateObject("excel.application")
mixl.Workbooks.Open "c:\tempo.xls"
mixl.Application.Visible = True
' cualquiera de estas dos formas es válida
Debug.Print mixl.Cells(3, "I")
Debug.Print mixl.Cells(3, 9)
mixl.Quit
Set mixl = Nothing

--------------------------------

Otra forma es:

Dim mixl As Object

Set mixl = GetObject("f:\tarifa\Tarifas Serviempresa 2005.xls")
mixl.application.Visible = True
mixl.Parent.windows(1).Visible = True
Set mixl = GetObject("f:\tarifa\Tarifas Serviempresa 2005.xls")
lista_catalogo.AddItem mixl.Worksheets(1).Range("I" & 4320).Value

Esto es para para extraer el dato de la celda I4320 (existe en mi hoja) de la hoja 1 y me da el error 381 (el indice de la matriz de propiedades no es valido).

Tambien he probado cambiando la ultima linea por la siguiente:

lista_catalogo.List(1) = mixl.Worksheets(1).Cells(4320, "I").Value

------------------------------------------

Otra:


Dim objExcel As Excel.Application, i As Integer

Set objExcel = New Excel.Application

With objExcel
.Workbooks.Open App.Path & "\MiPlantilla.xls"

.Range("I" & 4).Select
List1.AddItem .ActiveCell.FormulaR1C1

.Workbooks.Close
.Quit

-----------------------------------------

Y por ultimo la que yo uso es mediante consultas SQL creando un ODBC (Inicio -> Ejecutar -> odbcad32) del tipo "Driver do Microsoft Excel(*.xls) y seleccionando el archivo excel.
Entonces lo tratas como un ODBC normal (con connection, command, etc.) y las consultas tienes que hacerlas de la siguiente forma:

"Select DATO From [Conteo_Datos$]"

donde DATO es el nombre de una columna si el nombre esta puesto en la parte superior de la misma y [Conteo_Datos$] es la hoja donde hacemos la consulta.

Cuando haces referencia a una hoja del libro la tabla se llama igual que la hoja, pero le tienes que agregar el signo de dolar $ al final del nombre, pero como este no es un nombre válido para una consulta SQL, entonces lo encierras entre corcheques.





Saludos