PDA

Ver la Versión Completa : varios sheets con ole


apozosanz
06/06/06, 15:49:49
Objetos ole para excel.
Quiero meter en un excel datos pero en distintas hojas.
Lo que me pasa es que cada hoja me machaca la anterior y al final solo me sale una.
cada una de las hojas nuevas la creo asi:

*&---------------------------------------------------------------------
*& Form nuevas_hojas
*&---------------------------------------------------------------------
form nuevas_hojas using sheetname .

CALL METHOD OF g_xlapp 'Worksheets' = g_newsheet "no flush
EXPORTING #1 = 1 .
CALL METHOD OF g_newsheet 'Activate'.
CALL METHOD OF g_newsheet 'cells' = g_cell. "no flush.
set property of g_newsheet 'NAME' = sheetname.
endform.



hay algun metodo o algo para ir pasando paginas.
Nota: a priori no se cuantas hojas voy a necesitar

carlosalcala
07/06/06, 07:33:37
Cambia de trabajo preguntón!

carlosalcala
07/06/06, 13:25:05
Prueba con esto, a mi me funciona en un report normalito que solo hace esto

REPORT Z_PRUEBAS_OLE .

INCLUDE ole2incl.
DATA: application TYPE ole2_object,
workbook TYPE ole2_object,
sheet TYPE ole2_object,
cells TYPE ole2_object.

START-OF-SELECTION.

data: val type i value 8,
nh type i value 1.

create object application 'Excel.application'.
set property of application 'Visible' = 1.
call method of application 'Workbooks' = workbook.

set property of application 'SheetsInNewWorkbook' = 5.

call method of workbook 'Add'.
call method of application 'Worksheets' = sheet
exporting #1 = 2.

call method of workbook 'ADD'.

CALL METHOD OF application 'CELLS' = CELLs EXPORTING #1 = 2 #2 = 2.
SET PROPERTY OF CELLs 'VALUE' = val.
free object cells.
free object sheet.

do 4 times.

add 1 to nh.

call method of application 'Worksheets' = sheet
exporting #1 = nh.

CALL METHOD OF sheet 'Activate'.
CALL METHOD OF application 'CELLS' = CELLs
EXPORTING #1 = 3 #2 = 3.
SET PROPERTY OF CELLs 'VALUE' = 14.
free object cells.
enddo.

eljota
05/03/09, 14:58:16
Objetos ole para excel.
Quiero meter en un excel datos pero en distintas hojas.
Lo que me pasa es que cada hoja me machaca la anterior y al final solo me sale una.
cada una de las hojas nuevas la creo asi:

*&---------------------------------------------------------------------
*& Form nuevas_hojas
*&---------------------------------------------------------------------
form nuevas_hojas using sheetname .

CALL METHOD OF g_xlapp 'Worksheets' = g_newsheet "no flush
EXPORTING #1 = 1 .
CALL METHOD OF g_newsheet 'Activate'.
CALL METHOD OF g_newsheet 'cells' = g_cell. "no flush.
set property of g_newsheet 'NAME' = sheetname.
endform.



hay algun metodo o algo para ir pasando paginas.
Nota: a priori no se cuantas hojas voy a necesitar

el detalle en tu codigo es q pones:

CALL METHOD OF g_xlapp 'Worksheets' = g_newsheet "no flush
EXPORTING #1 = 1 .

cuando deberías poner:

CALL METHOD OF g_xlapp 'Worksheets' = g_newsheet "no flush
EXPORTING #1 = nro_hoja .

donde nro_hoja varia segun la hoja donde quieres trabajar (1 , 2 , 3, ...)

ahora, esto te servira solo para 3 hojas, ya q son las q tiene x defecto un libro excel.

Si necesitas mas hojas, tendrías q declarar al incio:

IF total_paginas > 3.
total_paginas = total_paginas - 3.
CALL METHOD OF APPLICATION 'WorkSheets' = SHEET.
DO total_paginas TIMES.
CALL METHOD OF SHEET 'Add'.
ENDDO.
ENDIF.

o poner set property of application 'SheetsInNewWorkbook' = 5.

salu2