Page 1 of 1

Excel, parentesis en nombre de hoja

PostPosted: Tue Mar 08, 2011 11:40 am
by Sebastián Almirón
Hola, para seleccionar una hoja en un objeto Excel, el siguiente código funciona bien:

choja := "Prueba"
oexcel := CreateObject("Excel.Application")
oexcel:ActiveWorkBook:Sheets(choja):Select()

Sin embargo:
choja := "Prueba(2)"
oexcel := CreateObject("Excel.Application")
oexcel:ActiveWorkBook:Sheets(choja):Select()

Esto da un error, porque el nombre de la hoja contiene parentesis.
¿Hay alguna forma de solucionar esto?

Actualmente para que no me de un error le hago un bucle:
for n = 1 to oexcel:ActiveWorkBook:Sheets:Count()
if alltrim(oexcel:ActiveWorkBook:Sheets:Item(n):Name()) = choja
oexcel:ActiveWorkBook:Sheets:Item(n):Select()
exit
endif
next n

Pero esto no me sirve porque es tremendamente lento, los libros que abro tienen entre 30 y 40 hojas y tengo procesos en los que tengo que abrir miles de libros para comprobar ciertas casillas.

Cuando utilizaba Excel con OLE, la siguiente línea no daba error:
osheets := OleGetProperty(::OleBook,'Worksheets',csheet)