Amigos:
Trato de pasar de una hoja de excel a dbf y
obtengo este error... alguna idea
Harbour, FWH7.05, Borland
Muchas gracias.
Ruben Fernandez.
Este es el código y debajo ele rror.
oExcel := TOleAuto():New( "Excel.Application" )
oExcel:WorkBooks:Open(cFilePath(GetModuleFileName(GetInstance()))+"eventos.xls")
oHoja := oExcel:Get( "ActiveSheet" )
nRows := oHoja:UsedRange:Rows:Count()
nCols := oHoja:UsedRange:Columns:Count()
FOR nCol := 1 TO nCols
IF ValType( oHoja:Cells( 2, nCol ):Value ) = "C"
AADD( aCampos, { oHoja:Cells( 1, nCol ):Value, "C", 25, 0 } )
ELSEIF ValType( oHoja:Cells( 2, nCol ):Value ) = "N"
AADD( aCampos, { oHoja:Cells( 1, nCol ):Value, "N", 6, 0 } )
ELSEIF ValType( oHoja:Cells( 2, nCol ):Value ) = "L"
AADD( aCampos, { oHoja:Cells( 1, nCol ):Value, "L", 1, 0 } )
ELSEIF ValType( oHoja:Cells( 2, nCol ):Value ) = "D"
AADD( aCampos, { oHoja:Cells( 1, nCol ):Value, "D", 8, 0 } )
ENDIF
NEXT
Aqui comienza el error.
Error Excel.Application/16389 E_FAIL: ACTIVESHEET
Argumentos :
[ 1] = U
Llamadas al Stack
________________________________________________________________________________
Called from TOLEAUTO:ACTIVESHEET(0)
Called from HB_EXECFROMARRAY(0)
Called from TOLEAUTO:GET(349)
Called from READEXEL(859)
Called from (b)LEEREVENTO(829)
Called from (b)MSGRUN(0)
Called from (b)TDIALOG(0)
Called from TDIALOG:DISPLAY(0)
Called from TDIALOG:HANDLEEVENT(0)
Called from DIALOGBOXINDIRECT(0)
Called from TDIALOG:ACTIVATE(0)
Filexls
Ruben comenta una linea.
oExcel := TOleAuto():New( "Excel.Application" )
oExcel:WorkBooks:Open(cFilePath(GetModuleFileName(GetInstance()))+"eventos.xls")
oHoja := oExcel:Get( "ActiveSheet" )
nRows := oHoja:UsedRange:Rows:Count()
for nFor := 1 to nRows
msginfo( oExcel:oHoja:Cells( nFor, nCol ):Value ) //prueba asi.
nex
saludos..
oExcel := TOleAuto():New( "Excel.Application" )
oExcel:WorkBooks:Open(cFilePath(GetModuleFileName(GetInstance()))+"eventos.xls")
oHoja := oExcel:Get( "ActiveSheet" )
nRows := oHoja:UsedRange:Rows:Count()
for nFor := 1 to nRows
msginfo( oExcel:oHoja:Cells( nFor, nCol ):Value ) //prueba asi.
nex
saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
Ruben,
estás seguro que lograste abrir el archivo .xls?
porque por lo que parece el error viene al seleccionar la hoja de trabajo.
prueba esto:
TRY
oHoja := oExcel:Get( "ActiveSheet" )
CATCH oError
MsgStop( oError:Operation+CRLF+oError:Description )
RETURN NIL
END TRY
P.D. no se si ahora con harbour puedes usar TRY, END TRY...
Saludos
estás seguro que lograste abrir el archivo .xls?
porque por lo que parece el error viene al seleccionar la hoja de trabajo.
prueba esto:
TRY
oHoja := oExcel:Get( "ActiveSheet" )
CATCH oError
MsgStop( oError:Operation+CRLF+oError:Description )
RETURN NIL
END TRY
P.D. no se si ahora con harbour puedes usar TRY, END TRY...
Saludos
Pedro Gonzalez
- Raymundo Islas M.
- Posts: 590
- Joined: Tue Mar 14, 2006 11:34 pm
- Location: Acapulco, Gro. MEXICO
Hola Ruben
Asi tengo el proceso para pasar de Excell a Dbf :
Espero te sirva
Saludos
Asi tengo el proceso para pasar de Excell a Dbf :
Code: Select all
Static Function ABESHWXLSDTS()
LOCAL oExcel, oHoja, nRows, nCols, aXRowVals, nRow, nCol, lVal2Ret := .F., aKurXFabXPrd, cXItm2Vrf
LOCAL aColsErr := {0,0,0}, cErrStrUpd := ""
LOCAL cFlXls2Prc := cGetFile( "*.XLS", "Seleccione Archivo De Datos" )
IF DckMBox( 2, "PARAMETROS PARA EXTRACCION DE DATOS DEL ARCHIVO" + CRLF + ;
"DE EXCEL HACIA EL SISTEMA MASTER SON CORRECTOS ?",,,, )
IF DckMBox( 3,,,,, )
DTSMDF->( OrdSetFocus(1), DbGoTop() )
oExcel := TOleAuto():New( "Excel.Application" )
*oExcel:Visible := .T. // por si quieres ver la hoja abierta
oExcel:WorkBooks:Open( cFlXls2Prc )
oHoja := oExcel:Get( "ActiveSheet" )
nRows := oHoja:UsedRange:Rows:Count()
nCols := oHoja:UsedRange:Columns:Count()
FOR nRow := 1 TO nRows
IF oHoja:Cells( nRow, 1 ):Value == NIL
EXIT
ENDIF
aXRowVals := {}
AaDd( aXRowVals, oHoja:Cells( nRow, 1 ):Value )
AaDd( aXRowVals, oHoja:Cells( nRow, 2 ):Value )
AaDd( aXRowVals, oHoja:Cells( nRow, 3 ):Value )
AaDd( aXRowVals, oHoja:Cells( nRow, 4 ):Value )
cXItm2Vrf := aXRowVals[1]
cXItm2Vrf := IIF( ValType( cXItm2Vrf ) == "N", ;
AllTrim( TransForm( cXItm2Vrf, "9999999999999999" ) ), cXItm2Vrf )
IF DTSMDF->( DbSeek( AllTrim( Upper( cXItm2Vrf ) ) ) )
IF AllTrim( DTSMDF->PPART ) == AllTrim( Upper( cXItm2Vrf ) )
DTSMDF->PIIU := aXRowVals[2]
DTSMDF->PEXSM := aXRowVals[3]
DTSMDF->PEXSN := aXRowVals[4]
DTSMDF->PSLD := 1
DTSMDF->PMDFLG := 1
ENDIF
ENDIF
NEXT
DTSMDF->( DbGoTop() )
lbCatMdf:REFRESH()
oExcel:ActiveWorkbook():Close( .F. )
oExcel:Quit()
lVal2Ret := .T.
ENDIF
ENDIF
Return NIL
*-----*
Saludos
FWH 10.6 + xHarbour + Borland 582
-
- Posts: 366
- Joined: Wed Aug 30, 2006 5:25 pm
- Location: Uruguay
Gracias Raymundo:
Lo tengo funcionando...
Aunque tengo alguna cosas diferentes a las tuyas,
quizas sea por Harbour y xHarbour
oExcel := TOleAuto():New( "Excel.Application" )
oExcel:WorkBooks:Open(cFilePath(GetModuleFileName(GetInstance()))+"eventos.xls")
oHoja := oExcel:ActiveSheet()
nRows := oHoja:UsedRange:Rows:Count()
nCols := oHoja:UsedRange:Columns:Count()
Saludos y muchas gracias a todos
Ruben Fernandez.
Lo tengo funcionando...
Aunque tengo alguna cosas diferentes a las tuyas,
quizas sea por Harbour y xHarbour
oExcel := TOleAuto():New( "Excel.Application" )
oExcel:WorkBooks:Open(cFilePath(GetModuleFileName(GetInstance()))+"eventos.xls")
oHoja := oExcel:ActiveSheet()
nRows := oHoja:UsedRange:Rows:Count()
nCols := oHoja:UsedRange:Columns:Count()
Saludos y muchas gracias a todos
Ruben Fernandez.