Tabela Dinâmica - Excel

Discussão em 'Progress 4GL' iniciado por DTerra, Abril 23, 2009.

  1. DTerra

    DTerra Sem Pontuação

    No excel, existe a função de se fazer uma tabela dinâmica (fica no menu dados -> Relatório de tabelas e gráficos dinâmicos) onde é informada a fonte dos dados, que pode ser uma planilha em excel mesmo e gera automaticamente a tabela dinâmica.
    Preciso fazer isso via progress.

    Valeu!
    Daniel Terra de Oliveira
  2. sl4v3r

    sl4v3r Membro Participativo

    Amigao...

    Na boa, :D pede para o usuario criar essa tabela dinamica lá no Excel mesmo.
    Algumas coisas geram mais problema do que solução.
  3. TeD

    TeD Membro Participativo

    Não sei se é possivel fazer o que você precisa, pelo menos nunca vi alguem utilizar.
    O que você pode tentar fazer é pegar um exemplo de um programa que gere uma planilha no excel.
    Com isso, você vai no excel e monte uma tabela dinamica gravando o macro.
    Após você precisa adaptar o seu programa utilizando os comandos gerados no macro.

    Espero que ajude.

    Att,
    TeD
  4. ereal

    ereal Sem Pontuação

    Miguim... foi facir nao! :D
    Tive que pegar codigo daqui e dali para o programa funcionar!
    Se a Microsoft nao mudar muito a proxima versao do Excel, este programa em anexo deve rodar limpinho no seu ambiente. Segue tambem para referencia o trechinho do inferno ! :lol:


    hExcel:ActiveSheet:pivotTableWizard(1,"Dados!C15:E18", "", "Dinamica").
    hWorkbook:ActiveSheet:Cells(15, 3):SELECT.
    hWorkbook:ActiveSheet:pivotTables("Dinamica"):ColumnGrand = FALSE.
    hWorkbook:ActiveSheet:pivotTables("Dinamica"):RowGrand = FALSE.

    /**/
    hWorkbook:ActiveSheet:pivotTables("Dinamica"):pivotFields("Nome"):ORIENTATION = 1 no-error. /* Coluna */
    assign l-erro = no.
    IF ERROR-STATUS:NUM-MESSAGES > 0 THEN DO:
    DO i-cont = 1 TO ERROR-STATUS:NUM-MESSAGES:
    IF ERROR-STATUS:GET-NUMBER(i-cont) = 5890 AND INDEX(ERROR-STATUS:GET-MESSAGE(i-cont),'ORIENTATION') <> 0 THEN DO:
    assign l-erro = yes.
    MESSAGE "Não foi possível inserir o campo NOME na tabela dinâmica, pois o mesmo provocou um estouro no limite de COLUNAS da tabela dinâmica do Excel." skip
    "Pelo motivo descrito acima a tabela dinâmica será gerada sem o campo NOME selecionado para exibição." view-as alert-box information.
    END.
    END.
    END.
    IF not l-erro THEN DO:
    hWorkbook:ActiveSheet:pivotTables("Dinamica"):pivotFields("Nome"):Subtotals(01) = no.
    hWorkbook:ActiveSheet:pivotTables("Dinamica"):pivotFields("Nome"):Subtotals(02) = no.
    hWorkbook:ActiveSheet:pivotTables("Dinamica"):pivotFields("Nome"):Subtotals(03) = no.
    hWorkbook:ActiveSheet:pivotTables("Dinamica"):pivotFields("Nome"):Subtotals(04) = no.
    hWorkbook:ActiveSheet:pivotTables("Dinamica"):pivotFields("Nome"):Subtotals(05) = no.
    hWorkbook:ActiveSheet:pivotTables("Dinamica"):pivotFields("Nome"):Subtotals(06) = no.
    END.

    /**/

    Arquivos Anexados:

    felipe.munhoz e jeffyssantos curtiram isso.

Compartilhe esta Página