Importar Dados de Uma Planilha(xls) para o Progress

Discussão em 'Progress 4GL' iniciado por eriutoncharles, Fevereiro 10, 2010.

  1. muertebr

    muertebr Membro Participativo

    O Tópico é meio antigo, mais to precisando ressuscita ele.
    Eu não consigo fazer pega das outras planilhas, ele só pega a informação da primeira planilha, mesmo mudando o "Sheet".

    Código:
    DEF VAR chExcelApplication AS COM-HANDLE NO-UNDO.
    DEF VAR chWorkbook         AS COM-HANDLE NO-UNDO.
    DEF var chworksheet        AS COM-HANDLE NO-UNDO.
    
    define variable m-linha   as integer    no-undo.
    
    def var c-item as character no-undo.
    
    create "Excel.Application" chExcelApplication.
    chWorkbook = chExcelApplication:Workbooks:ADD("C:\work\teste.xlsx").
    chWorkSheet = chExcelApplication:Sheets:ITEM(3).
    
    chExcelApplication:visible        = false.
    chExcelApplication:displayalerts  = false.
    chExcelApplication:ScreenUpdating = false.
    ASSIGN m-linha = 3.
    
    repeat:
    
        c-item = chExcelApplication:Range("b" + string(m-linha)):value no-error.
        m-linha = m-linha + 1.
    
        if c-item = ? then leave.
        DISP c-item.
    end.
    chExcelApplication:visible = false.
    chExcelApplication:ActiveWorkbook:close(true).
    chExcelApplication:Quit() no-error.
    
    Release Object chWorksheet No-error.
    RELEASE OBJECT chExcelApplication No-error.
    RELEASE OBJECT chWorkbook No-error.
  2. muertebr

    muertebr Membro Participativo

    Já consegui resolve, estava pegando o handle incorreto.

    Errado
    c-item = chExcelApplication:Range("b" + string(m-linha)):value no-error.

    Certo
    c-item = chWorkSheet:Range("b" + string(m-linha)):value no-error.
  3. LFBuozi

    LFBuozi Membro Participativo

    O problema está na linha 20, a primeira do repeat, no lugar de pegar o range de sua application, você deve pegar o range de sua worksheet.
    Então mude isto:
    Código:
    c-item = chExcelApplication:Range("b" + string(m-linha)):value no-error.
    Para isto:
    Código:
    c-item = chWorkSheet:Range("b" + string(m-linha)):value no-error.

Compartilhe esta Página