varios sheets con ole

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • apozosanz
    Member
    • feb
    • 86

    #1

    varios sheets con ole

    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
    Member
    • may
    • 46

    #2
    Cambia de trabajo preguntón!
    Salu2

    Carlos!

    Comentario

    • carlosalcala
      Member
      • may
      • 46

      #3
      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.
      Salu2

      Carlos!

      Comentario

      • eljota
        Member
        • dic
        • 48

        #4
        Originalmente publicado por apozosanz
        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
        Jaime Zegarra V.
        ________________
        ABAP Developer

        Comentario

        Trabajando...