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