Hola, estoy intentando leer un archivo de excel desde vfp con este
codigo que lo copie desde esta web
http://support.microsoft.com/kb/949529
Lo unico que yo modifique es la intruccion parameters para pasar el
nombre del libro de excel.
El error que me da es el siguiente:
SQL Cmd Success: Failet
[Microsoft][Controlador ODBC Excel] 'Sheet1$' no es un nombre válido.
Asegurese de que no incluya caracteres o signos de puntuacion no
validos y que el nombre no es demasiado largo.
El nombre del libro es ListaSchenider.xlsx, tambien intente con
Libro1.xlsx
el nombre de la hoja del libro es Lista o Hoja1
Lo probe al codigo con VFP 7 SP1 y VFP9 SP2 en windows XP SP3 y
Windows 7 Ultimate
en el windows xp instale el driver de excel para office 2007, que
seria el ODBC, en todos los caso siempre me da el mismo error.
Les agradezco su ayuda o comentarios.
Gracias
Carlos Veron
parameters cArchivo
*-----------------------------------
* AUTHOR: Trevor Hancock
* CREATED: 02/15/08 04:55:31 PM
* ABSTRACT: Code demonstrates how to connect to
* and extract data from an Excel 2007 Workbook
* using the "Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)"
* from the 2007 Office System Driver: Data Connectivity Components
*-----------------------------------
LOCAL lcXLBook AS STRING, lnSQLHand AS INTEGER, ;
lcSQLCmd AS STRING, lnSuccess AS INTEGER, ;
lcConnstr AS STRING
CLEAR
*lcXLBook = [C:\SampleWorkbook.xlsx]
lcXLBook = [&cArchivo]
lcConnstr = [Driver=] + ;
[{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};] + ;
[DBQ=] + lcXLBook
IF !FILE( lcXLBook )
? [Excel file not found]
RETURN .F.
ENDIF
*-- Attempt a connection to the .XLSX WorkBook.
*-- NOTE: If the specified workbook is not found,
*-- it will be created by this driver! You cannot rely on a
*-- connection failure - it will never fail. Ergo, success
*-- is not checked here. Used FILE() instead.
lnSQLHand = SQLSTRINGCONNECT( lcConnstr )
*-- Connect successful if we are here. Extract data...
lcSQLCmd = [Select * FROM "Sheet1$"]
lnSuccess = SQLEXEC( lnSQLHand, lcSQLCmd, [xlResults] )
? [SQL Cmd Success:], IIF( lnSuccess > 0, 'Good!', 'Failed' )
IF lnSuccess < 0
LOCAL ARRAY laErr[1]
AERROR( laErr )
? laErr(3)
SQLDISCONNECT( lnSQLHand )
RETURN .F.
ENDIF
*-- Show the results
SELECT xlResults
BROWSE NOWAIT
SQLDISCONNECT( lnSQLHand