La Web del Programador: Comunidad de Programadores
 
    Pregunta:  62444 - LEER CONTROL OLE EXCEL
Autor:  Luis Zanini
Saludos amigos listeros.
Tengo un control ole excel de nombre ctrl_ole_excel, que quisiera leer los datos que tiene para pasarlos a un datawindow (quiero darle la facilidad al usuario que modifique en el propio ole los datos necesarios), pero no se como acceder a cada una de las celdas.

O de lo contrario como asocio el Control Ole con un Objeto Ole, porque desde ahí si podría acceder
(obj_ole_excel.Application.ActiveWorkbook.Worksheets[1].cells[1,1].value)

Hago lo siguiente:

ctrl_ole_excel.insertfile("c:prueba.xls")
obj_ole_excel = CREATE OLEObject
obj_ole_excel.ConnectToObject("", "Excel.Application")
obj_ole_excel.object = ctrl_ole_excel.object

//pero me da "Error accessing external object property object":

Espero me puedan ayudar. Gracias.

  Respuesta:  David Ayala
A mi me funciona así copiando las filas que quiero de la excel al portapapeles y pegandolas en la datawindows:

// IMPORTAR EXCEL A DATAWINDOWS EXTERNA
oleobject excel
excel = create OLEObject
ll_rtn = excel.ConnectToNewObject("excel.application")
IF ll_rtn <> 0 THEN
MessageBox('Excel error','No puede conectarse a Excel')
DESTROY excel
RETURN 0
END IF

excel.WorkBooks.Open("c:prueba.xls")
excel.Application.Visible = false
excel.windowstate = 2 // 1 : Normal, 2 : Minimize, 3 : Maximize

lb_sheet_rtn = excel.worksheets(1).Activate

excel.Worksheets(1).Range("A4:AX60").Copy // copiar al clipboard

// Importar desde clipboard
ll_cnt = dw_excel.importclipboard()
IF ll_cnt <= 1 THEN
Messagebox("Info", "No se encontró")
END IF

excel.Worksheets(1).Range("A10000:A10000").Copy //reset clipboard
excel.Application.Quit
excel.DisConnectObject()
DESTROY excel

Espero que te sirva.
Saludos.