Error con XLS y VB-ADO

25/09/2003 - 19:21 por Saga | Informe spam
Va de nuez!
Maldito Swen...

Hola!!

Tengo una aplicacion que abre un XLS para leer datos de inventario. Ha
funcionado chorrocientas veces sin ningun problema, pero ayer presento
un error. El error que presenta indica que no encontro el objeto
"hjInventario", que es el nombre de una hoja.

Mi codigo es el siguiente:

Nota: strCarpeta y strArchivo se reciben como parametros a esta rutina.

strConn = "Driver={Microsoft Excel Driver (*.xls)}; " & _
"DriverIdy0; Dbq=" & strArchivo & _
"; DefaultDir=" & strCarpeta & ";"

Set xlsADO = New ADODB.Connection

With xlsADO
.ConnectionString = strConn
.CursorLocation = adUseClient
.ConnectionTimeout = 60
.CommandTimeout = 120
.Open
End With

If xlsADO.State = adStateOpen Then
'Set rs = New ADODB.Recordset

'Set rs = xlsADO.OpenSchema(adSchemaTables)
'While Not rs.EOF
' Debug.Print rs!TABLE_NAME
' rs.MoveNext
' Wend


strX = "SELECT * FROM ""hjInventario"""

Set rs = New ADODB.Recordset

With rs
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
'En la linea siguiente es donde me da el error.
.Open strX, xlsADO, , adLockOptimistic, adCmdText
End With

Como notan, en comentarios, tengo un OpenSchema para ver que pasa dentro del
XLS. Para mi sorpresa, el OpenSchema encontro dos "tablas" en los XLSs
anteriores:

hjInventario$ y hjInventario.

El XLS del problema solo tiene una: hjInventario$ Por que????

Abri el XLS con Excel y efectivamente tiene una hoja cuyo nombre es
hjInventario, pero por alguna razon esta "tabla" no la ve el openschema de
ADO. En este momento abri un XLS anterior, seleccione todo, borre,
copie el contenido del XLS con el problema y guarde. Al volver a probar
funciono bien, pero esto fue solo para salir del apuro. Me gustaria saber
que otra medida necesito tomar, ya que el usuario de la aplicacion no puede
estar haciendo este movimiento todos los dias.

Les agradezco su tiempo y cualquier recmendacion que me puedan hacer...
Gracias!!!

Saga
PD: Este mensaje lo mande a microsoft.public.es.excel y
microsoft.public.es.vb
 

Leer las respuestas

#1 Softjaen
26/09/2003 - 06:03 | Informe spam
"Saga" escribió:

Va de nuez!
Maldito Swen...




Jejeje. Ésta es la tercera vez que respondo a tu mensaje. Espero que lo
puedas leer.


tengo un OpenSchema para ver que pasa dentro del
XLS. Para mi sorpresa, el OpenSchema encontro
dos "tablas" en los XLSs anteriores:

hjInventario$ y hjInventario.

El XLS del problema solo tiene una: hjInventario$
Por que????




No es una sorpresa. «hjInventario$» es el nombre de la
hoja y «hjInventario» seguramente es el nombre de un rango
de igual nombre al de la hoja de cálculo.

Si tu escribes «"SELECT * FROM ""hjInventario"""», estás
seleccionando las columnas del rango con nombre, no las
columnas de la hoja de cálculo. Para ello, deberías de
añadir el símbolo $ al nombre de la hoja (hjInventario$).

Échale un vistazo al artículo que tengo publicado sobre el
ISAM de Excel, concretamente al punto número 4. Allí
también encontrarás abundante información y ejemplos:

Trabajar con ADO, DAO y Excel
http://es.geocities.com/softjaen/Ar...ado_dao_ex
cel.htm

Un saludo.

Enrique Martínez
[MS MVP - VB]

Preguntas similares