• Lunes 29 de Abril de 2024, 15:28

Autor Tema:  Consultas A Excel  (Leído 1860 veces)

barri

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Consultas A Excel
« en: Lunes 31 de Octubre de 2005, 20:50 »
0
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.

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Consultas A Excel
« Respuesta #1 en: Lunes 14 de Noviembre de 2005, 17:33 »
0
¿No estarás confundiendo Excel con Access?

barri

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Consultas A Excel
« Respuesta #2 en: Martes 15 de Noviembre de 2005, 09:16 »
0
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.

patitofeo

  • Miembro MUY activo
  • ***
  • Mensajes: 145
    • Ver Perfil
Re: Consultas A Excel
« Respuesta #3 en: Martes 15 de Noviembre de 2005, 19:29 »
0
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

barri

  • Nuevo Miembro
  • *
  • Mensajes: 10
    • Ver Perfil
Re: Consultas A Excel
« Respuesta #4 en: Jueves 17 de Noviembre de 2005, 10:45 »
0
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