ACTIVAR LIBRO DE EXCEL VARIOS ABIERTOS

ACTIVAR LIBRO DE EXCEL VARIOS ABIERTOS

Postby joseluisysturiz » Thu Oct 08, 2015 7:11 am

Saludos, estoy trabajando con varios libros de excel trayendo datos de uno Hoja a otro libro, la lectura y apertura me va bien, pero ahora resulta que debo grabar valores en HOJAS dinamicamente, asi que primero debo saber si esa hoja existe para luego cambiarme al libro y a la hoja, el detalle es que no consigo como hacer para que me active el libro donde quiero verificar si existe dicha hoja...

algo de codigo...

Code: Select all  Expand view

   oExResu := TOleAuto():New( "Excel.Application" ) // ACTIVANDO EXCEL PARA LIBRO RESUMEN
   oExResu:Visible := .t. // MOSTRAR O NO HOJA DE EXCEL
//
   oExAngu := TOleAuto():New( "Excel.Application" )
   oExAngu:Visible := .t.
//
   oExResu:Workbooks:Open( cResumen ) // ABRO EL ARCHIVO DE RESUMEN

// ARCHIVOS DE ANGULOS
   FOR nFor := 10 TO 360 STEP 10 // NOMBRE DE LOS LIBROS ANGULOS
      oExAngu:Workbooks:Open( cAngulo + AllTrim( Str( nFor ) ) )

      lee_angulos( oExResu, oExAngu )

***      oExAngu:WorkBooks:Close() // CIERRA LIBRO ACTIVO
   NEXT
 


hasta alli todo bien, para verificar si existe una hoja en un libro lo hago asi...

Code: Select all  Expand view

? Len( oExAngu:Sheets() ) // MUESTRA CANTIDAD DE HOJAS DE UN LIBRO ACTIVO

for nFor := 1 to Len( oExAngu:Sheets() )
   ? oExAngu:Sheets(nFor):Name

If oExAngu:Sheets(nFor):Name == "COLUMNAS"
   Alert("COLUMNAS")
endif

next
 


el detalle esta en comom cambiar de un libro a otro ya que aunque me cambio relativamente, cuando pido cantidad de hojas, me sigue dando la del libro anterior, intente con oExResu:Workbooks:Activate() y da error de la funcion activate

asi meestoy cambiando al otro libro o eso intento

Code: Select all  Expand view

   oExResu:Sheets("PLANTA"):Select() // SELECCIONO EN QUE HOJA VOY A GRABAR
   oHoja2 := oExResu:ActiveSheet() // SINO ESPECIFICAS QUE HOJA, TOMARA POR DEFECTO LA HOJA1
 


espero sus sugerencias y ayudas, desde ya, gracias..saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: ACTIVAR LIBRO DE EXCEL VARIOS ABIERTOS

Postby luisduque » Thu Oct 08, 2015 4:01 pm

Hola buenos días

oExResu:ActiveSheet()

solo déjalo así sin ()

oExResu:ActiveSheet

a mi me trabaja bien
Fivewin 16.11
Harbour 3.2.0
Visual Studio 2015 community
MariaDb/MySql

Ing. MSc. Luis Duque
http://www.accasoft.net
luisduque
 
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela

Re: ACTIVAR LIBRO DE EXCEL VARIOS ABIERTOS

Postby joseluisysturiz » Thu Oct 08, 2015 4:14 pm

luisduque wrote:Hola buenos días

oExResu:ActiveSheet()

solo déjalo así sin ()

oExResu:ActiveSheet

a mi me trabaja bien


Luis, asi como dices es para activar HOJAS, quiero es activar o como diriamos...dale el FOCUS o un libro o colocarlo como libro activo, ya que tengo varios abiertos, de uno voy leyendo datos y luego debo cambiarme al otro libro DESTINO donde en X hoja que la activo con oHoja := oExResu:ActiveSheet(), ademas si le quito los parentesis enseguida tengo un error de que faltan parametros en la ejecucion del comando, recuerda lo que quiero activar o dar focus...es al libro, no a la hoja...

como al seleccionar una HOJA de un LIBRO si no existe me da un error, por los momentos lo estoy trabajando usando un TRY CATCH END, que visto en los foros de VB, dicen es la manera mas comoda y rapida, asi no tengo que recorrer todo el array dellibro buscando cada rato si existe nombre de HOJA y esta funcionando perfecto, luego publico loque estoy haciendo haber si ha alguien le sirve, igual gracias por tu respuesta, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: ACTIVAR LIBRO DE EXCEL VARIOS ABIERTOS

Postby luisduque » Fri Oct 09, 2015 3:48 am

Hola Jose Luis

esto hago para construir una hoja de excel con varias hojas

TRY
oExcel := GetActiveObject( "Excel.Application" )
CATCH
TRY
oExcel := CreateObject( "Excel.Application" )
CATCH
MsgAlert( "Excel no instalado" )
return
END
END

Try
oExcel:WorkBooks:Add()
Catch
MsgAlert( "Cierre las Hojas de Excel" )
return
End

oHoja := oExcel:ActiveSheet
oHoja:name := 'Totales'



If oExcel:sheets:count() <= 1
oExcel:sheets:Add()
EndIf

oExcel:Sheets("Hoja2"):Select()
oHoja := oExcel:ActiveSheet
oHoja:name:='Nomina'

If oExcel:sheets:count() <= 2
oExcel:sheets:Add()
EndIf

oExcel:Sheets("Hoja3"):Select()
oHoja := oExcel:ActiveSheet
oHoja:name:='Resumen'

Selecciona la Hoja2 que es el focus y le cambio de nombre a Nomina y hago la primera condición porque si no hay sino 1 sola hoja agrego, tienes que tener en cuenta mayusculas y minusculas


a mi me sirve tal cual, me sirve con la version 11.06 y este año con todas las versiones incluyendo la actual 15.09, tanto en 32 bits como en 64 bits, trabajo con microsoft visual c++ 2013 comunidad
Fivewin 16.11
Harbour 3.2.0
Visual Studio 2015 community
MariaDb/MySql

Ing. MSc. Luis Duque
http://www.accasoft.net
luisduque
 
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela

Re: ACTIVAR LIBRO DE EXCEL VARIOS ABIERTOS

Postby joseluisysturiz » Fri Oct 09, 2015 3:59 am

luisduque wrote:Hola Jose Luis

esto hago para construir una hoja de excel con varias hojas

TRY
oExcel := GetActiveObject( "Excel.Application" )
CATCH
TRY
oExcel := CreateObject( "Excel.Application" )
CATCH
MsgAlert( "Excel no instalado" )
return
END
END

Try
oExcel:WorkBooks:Add()
Catch
MsgAlert( "Cierre las Hojas de Excel" )
return
End

oHoja := oExcel:ActiveSheet
oHoja:name := 'Totales'



If oExcel:sheets:count() <= 1
oExcel:sheets:Add()
EndIf

oExcel:Sheets("Hoja2"):Select()
oHoja := oExcel:ActiveSheet
oHoja:name:='Nomina'

If oExcel:sheets:count() <= 2
oExcel:sheets:Add()
EndIf

oExcel:Sheets("Hoja3"):Select()
oHoja := oExcel:ActiveSheet
oHoja:name:='Resumen'

Selecciona la Hoja2 que es el focus y le cambio de nombre a Nomina y hago la primera condición porque si no hay sino 1 sola hoja agrego, tienes que tener en cuenta mayusculas y minusculas


a mi me sirve tal cual, me sirve con la version 11.06 y este año con todas las versiones incluyendo la actual 15.09, tanto en 32 bits como en 64 bits, trabajo con microsoft visual c++ 2013 comunidad


Disculpa Luis, creo aun no me has entendido...no me refiero a HOJAS..me refiero a LIBROS... o por llamarlo a lo criollo..un archivo diferente...un libro de excel esta compuesto de HOJAS o PESTAÑAS, las cuales estan al pie del excel, el cual podemos agregar, eliminar, renombrar, cambiarnos..etc...con eso no tengo problemas...el punto que planteaba es cambiarme entre LIBROS(archivos), para ser mas claro....un archivo se llama ventas.xls(eso es un libro) y otro se llama compras.xls(eso es otro libro), los cuales ambos contienen HOJAS, igual por los momentos resolvi y creo es la mejor manera...a menos que necesite sabes cuantas HOJAS tiene un LIBRO(archivo), igual gracias por responder, estoy a la orden, le he metido bastante el pecho a esto de excel...guiandome por los macros de VB, saludos... :shock:
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 37 guests