Sei sulla pagina 1di 11

13/09/2019 Excel e Progress - Guia completo - Temp Table

(https://temptable.com.br/)

 Main Menu 

Excel e Progress – Guia completo


 27/06/2017 (https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html)  Fabiano Soares (https://temptable.com.br/author/fabianofss)

Criando aplicação entre Progress e Excel e configurando planilha


Criando variáveis COM-HANDLE para interação do Progress com o Excel

1 DEF VAR excelappl AS COM-HANDLE NO-UNDO.


2 DEF VAR ChWorkSheet AS COM-HANDLE NO-UNDO.

Criando a aplicação Excel

1 CREATE "excel.application" excelappl.

Abrir um arquivo (2 formas).


1 – em branco

1 excelappl:workbooks:ADD().

2 – Utilizando um modelo já existente do excel

1 excelappl:workbooks:ADD(c-modelo).

Onde c-modelo é o nome do arquivo excel modelo. Essa variável deve ter o conteúdo completo do arquivo, ou seja, diretório + nome do arquivo (usar sempre arquivo
.xlt -> modelo)

Fechando o Excel

1 excelappl:quit().

Usar apenas quando quiser fechar o excel, como por exemplo após uma impressão. Se quiser que o arquivo fique aberto para consulta ou para salvá-lo manualmente,
não utilizar esse comando.
Esse comando fecha a planilha excel mas não libera o handle da aplicação, vide nota abaixo.

Liberando o Handle ao final da execução


(muito importante, inserir esse comando sempre ao final do programa, pois mesmo se o Excel é fechado pelo usuário, a handle fica na memória.)

1 RELEASE OBJECT excelappl NO-ERROR.


2 RELEASE OBJECT chWorksheet NO-ERROR.

https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html 1/11
13/09/2019 Excel e Progress - Guia completo - Temp Table
Repetir o Release para todas as variáveis com-handle.

Selecionar pastas
excelappl:worksheets:ITEM(1):SELECT.
O número relacionado ao ITEM é a pasta que deseja selecionar
Adicionar pastas
excelappl:sheets:ADD.
Quando o comando acima é executado, a nova planilha criada passa a ser a corrente. Caso queira inserir informações em outras planilhas, é necessário selecionar a
planilha desejada conforme tópico acima.
Copiar pastas
excelappl:sheets:item(“Plan 1”):activate.
excelappl:Sheets(“Plan 1”):Copy(excelappl:Sheets(1)).
“Plan 1” é o nome da pasta a ser copiada. (geralmente o excel sugere “Plan 1”). Se for diferente, basta substituir.
Sheets(1) é o lugar onde a pasta será copiada. 1 é a primeira pasta, caso queira inserir no final, criar uma variável de controle.
Renomear pastas
excelappl:worksheets:ITEM(i-item):SELECT.
excelappl:worksheets:ITEM(i-item):NAME = “XYZ”.
excelappl:worksheets:ITEM(i-item):NAME = TRIM(item.it-codigo).
Não esquecer de selecionar a pasta primeiro. A variável i-item é a pasta a ser renomeada, que pode receber uma constante ou o valor de uma variável lembrando que
não podem ser utilizados caracteres especiais como /, *, [, ].
Sugiro criar uma variável e substituir esses caracteres:

1 ASSIGN c-sheet = REPLACE(c-sheet,"/","_").


2 ASSIGN c-sheet = REPLACE(c-sheet,"\","_").
3 ASSIGN c-sheet = REPLACE(c-sheet,"[","(").
4 ASSIGN c-sheet = REPLACE(c-sheet,"]",")").
5 ASSIGN c-sheet = REPLACE(c-sheet,"*","x").
6 ASSIGN c-sheet = REPLACE(c-sheet,":",".").
7 ASSIGN c-sheet = REPLACE(c-sheet,"?","|").
8 excelappl:worksheets:ITEM(i-item):SELECT.
9 excelappl:worksheets:ITEM(i-item):NAME = c-sheet.

Visualizar arquivo Excel


excelappl:VISIBLE = FALSE.
excelappl:VISIBLE = TRUE.
Se True, o Excel é aberto e montado para visualização do usuário. Recomendável deixar false durante a execução do programa e no final repetir o comando, porém
com TRUE. Isso deixa o programa mais rápido e evita um problema que pode acontecer caso o usuário selecione uma célula enquanto o progress monta o arquivo.
Ocultar/mostrar linhas de grade
excelappl:ActiveWindow:DisplayGridlines = False. (ou true)
obs.: não confundir linhas do arquivo com impressão de linhas de grade. Para Impressão, vide configuração de páginas.
Zoom do arquivo (visualização)
excelappl:ActiveWindow:Zoom = 65. /* 65 é o percentual desejado */
Configurações da página (para impressão)
Obs.: alterar as configurações somente quando necessário, se não informado, o arquivo utiliza as configurações padrão do Excel.
Orientação da página
chWorkSheet:PageSetup:Orientation = 1. /* Portrait (retrato) */
chWorkSheet:PageSetup:Orientation = 2. /* Landscape (paisagem) */
Zoom da página (Impressão)
chWorkSheet:PageSetup:Zoom = 75. /* 75 é o percentual desejado */
Não confundir com o zoom do arquivo, esse zoom é o ajuste para X % do tamanho normal na configuração da página
Ajustar página por X de Altura e Y de Largura (Impressão)
chWorkSheet:PageSetup:Zoom = FALSE. /* a zoom tem que ser desativado para funcionar */
chWorkSheet:PageSetup:FitToPagesWide = 1.
chWorkSheet:PageSetup:FitToPagesTall = 1000.
Tipo/tamanho do Papel
chWorkSheet: PageSetup:PaperSize = “tipo do papel desejado”.
Qualidade de impressão
chWorkSheet: PageSetup:PrintQuality = 600.
Número da primeira página
chWorkSheet: PageSetup:FirstPageNumber = 3.
Margens
Obs.: a medida é em “inches”, é necessário converter para centímetros. Exemplo : 15 = 0.5 cm

1 chWorkSheet:PageSetup:LeftMargin = 15. /* Margem esquerda */


2 chWorkSheet:PageSetup:RightMargin = 15. /* Margem direita */
3 chWorkSheet:PageSetup:TopMargin = 15. /* Margem superior */
4 chWorkSheet:PageSetup:BottomMargin = 15. /* Margem inferior */
5 chWorkSheet:PageSetup:HeaderMargin = 0. /* Margem cabeçalho */
6 chWorkSheet:PageSetup:FooterMargin = 0. /* Margem rodapé */

Centralizar página
chWorkSheet:PageSetup:CenterHorizontally = True. (ou False)
chWorkSheet:PageSetup:CenterVertically = True. (ou False)
Cabeçalho e rodapé
chWorkSheet:PageSetup:CenterHeader = “Titulo do Relatorio”. /* cabeçalho */
/* rodapé */
chWorkSheet:PageSetup:LeftFooter = “OBS.: ” + FILL(“_”,60) + CHR(10) + FILL(“_”,66) + CHR(10) +
CHR(10) + “____________________” + CHR(10) + ” ASS. GESTOR”.
chWorkSheet:PageSetup:CenterFooter = CHR(10) + CHR(10) + “_____ / _____ / ________” + CHR(10)
+ “Data do Visto”.
chWorkSheet:PageSetup:RightFooter = CHR(10) + CHR(10) + “PAGINA: ” + “&P/&N”.

https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html 2/11
13/09/2019 Excel e Progress - Guia completo - Temp Table
Área de Impressão
chWorkSheet:PageSetup:PrintArea = “$A$1:$J$45”. /* marca a área de impressão da célula A1 até a J45
Imprimir títulos
chWorkSheet:PageSetup:printTitleRows = “$1:$7″. /* repete o range de linhas de 1 a 7 na impressão de todas as páginas */
chWorkSheet:PageSetup:printTitleColumns = ” $A:$B”. /* repete o range de colunas de A a B na impressão de todas as páginas */
Imprimir Linhas de Grade
chWorkSheet:PageSetup:PrintGridlines = False. Ou True
Obs.: esse comando funciona apenas para impressão. Para visualizar linhas de grade no arquivo, vide “Ocultar/mostrar linhas de grade”
Imprimir Preto e Branco
chWorkSheet:PageSetup:BlackAndWhite = False. Ou True
Imprimir Qualidade Rascunho
chWorkSheet:PageSetup:Draft = False. Ou True
Inserindo informações e configurando células
Inserir informação em uma célula (comando + usado)
excelappl:range(“A1”):VALUE = “Item”.
excelappl:range(“B1”):VALUE = item.it-codigo.
Controlar células por variáveis
excelappl:range(“A” + STRING(i-linha, “999999”) ):VALUE = item.it-codigo.
excelappl:range(“P” + STRING(i-linha, “99999999”)):VALUE = d-valor-total – d-val-adto.
excelappl:range(“A” + STRING(i-linha, “99999999”)):VALUE = “codigo “ + string(emitente.cod-emitente).
Obs.: cada célula recebe apenas um tipo de dado. Ou é caracter, ou inteiro, ou decimal, e assim por diante.
Caso queira colocar uma string + um valor, é necessário tranformar o valor em string como no último exemplo.
As colunas também podem ser controladas por variáveis, uma forma fácil de fazer isso é criar uma variável extent e controlar as colunas por números.
DEF VAR i-coluna AS INTEGER NO-UNDO.
DEF VAR c-coluna AS CHAR EXTENT 256 NO-UNDO
INITIAL
[“A”,”B”,”C”,”D”,”E”,”F”,”G”,”H”,”I”,”J”,”K”,”L”,”M”,”N”,”O”,”P”,”Q”,”R”,”S”,”T”,”U”,”V”,”W”,”X”,”Y”,”Z”,”AA”,”AB”,”AC”,”AD”,”AE”,”AF”,”AG”,”AH”,”AI”,”AJ”,”AK”,”AL”,”AM”,”AN”,”AO
O número máximo de colunas é 256.
Assign i-coluna = 5. /* corresponde a coluna E */
excelappl:range(STRING(c-coluna[i-coluna]) + STRING(i-linha, “99999999”)):VALUE = item.desc-item.
Com isso é também possível controlar as colunas por números.
Inserir Cálculo / Fórmula
excelappl:range(“B20”):VALUE = “=SUM(B2:B19)”.
excelappl:range(“B” + STRING(i-linha, “999999”)):VALUE = “=SUM(B” + STRING(i-linha-aux, “999999”) + “:B” + STRING(i-linha – 2, “999999”) + “)”.
excelappl:range(“B” + STRING(i-linha, “999999”):FormulaR1C1 = “=SUM(R[-” + string(i-conta) + “]C:R[-1]C)”.
Obs.: comando SUM é o somatório, se precisar de outras fórmulas, vide nome no excel
O cálculo também pode ser manual:
excelappl:range(“B” + STRING(i-linha, “999999”)):VALUE = “=B12+C12+E12”.
Manipulação de números (Configurar Separador Decimal e Separador de milhar)
excelappl:DecimalSeparator = “,”.
excelappl:ThousandsSeparator = “.”.
excelappl:UseSystemSeparators = FALSE.
Muito útil quando o relatório pode ser gerado em Excel instalado em Português e Inglês (dependendo do usuário). Essa opção funciona apenas no Office 2003 ou
posterior, os outros não possuem essa opção que fica em Ferramentas / Opções / Internacional.

Dependendo da linguagem, os números saem distorcidos. Segue abaixo dica para correção:
Your ads will be inserted here by DEF VAR c-DecimalSeparator AS CHAR NO-UNDO.
DEF VAR c-ThousandsSeparator AS CHAR NO-UNDO.
Easy Ads.
DEF VAR l-UseSystemSeparators AS LOGICAL NO-UNDO.
Please go to the plugin admin page to set No começo do programa.
up your ad code.
ASSIGN c-DecimalSeparator = excelappl:DecimalSeparator
c-ThousandsSeparator = excelappl:ThousandsSeparator
l-UseSystemSeparators = excelappl:UseSystemSeparators.
excelappl:DecimalSeparator = “,”.
excelappl:ThousandsSeparator = “.”.
excelappl:UseSystemSeparators = FALSE.
/* imprimir valores desejados aqui */
No final do programa.
excelappl:DecimalSeparator = c-DecimalSeparator.
excelappl:ThousandsSeparator = c-ThousandsSeparator.
excelappl:UseSystemSeparators = l-UseSystemSeparators.
Trocando formato da célula
excelappl:range(“B1”):numberformat = “#.##0”.
excelappl:range(“B1”):numberformat = “#.##0,00”.
excelappl:range(“B1”):numberformat = “@”. /* texto */
IMPORTANTE: Colocar os formatos antes dos valores nas células, principalmente campos texto “@”
Verificar outros formatos do excel como data, hora, etc (exatamente como aparece na macro).
Alterando tamanho da coluna
excelappl:COLUMNS(“A:A”):ColumnWidth = 15.00. /* 1 coluna */
excelappl:COLUMNS(“B:J”):ColumnWidth = 12.00. /* N colunas */
ou
excelappl:COLUMNS(“B:J”):SELECT.
excelappl:SELECTION:ColumnWidth = 12.00.
Alterando tamanho da linha
excelappl:Rows(“1:1”):RowHeight = 20.5. /* 1 linha */
excelappl:Rows(“1:15”):RowHeight = 20.5. /* N linhas
Inserindo Linhas

https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html 3/11
13/09/2019 Excel e Progress - Guia completo - Temp Table
excelappl:range(“15:15”):INSERT()
ou
excelappl:range(string(i-linha, “9999”) + “:” + string(i-linha, “9999”)):INSERT().
Mesclar células
excelappl:range(“A1:J10):SELECT.
excelappl:SELECTION:merge.
OBS.: Selecionar o range primeiro e fazer o merge depois
Ou fazer direto.
excelappl:range(“A” + STRING(i-linha) + “:D” + STRING(i-linha)):Merge.
excelappl:range(“A” + STRING(i-linha) + “:D” + STRING(i-linha + 10)):Merge.
“Desmesclar” células
excelappl:range(“B” + STRING(i-linha, “999999”)):SELECT.
excelappl:SELECTION:UNMERGE.
Reduzir tamanho da letra automaticamente para caber na célula
excelappl:range(“A” + STRING(i-linha, “99999999”)):ShrinkToFit = TRUE.
Quebrar texto automaticamente para caber na célula
excelappl:range(“A” + STRING(i-linha, “99999999”)): WrapText = TRUE.
Orientação do Texto dentro da célula
excelappl:range(“A” + STRING(i-linha, “99999999”)): Orientation = 0. /* horizontal */
excelappl:range(“A” + STRING(i-linha, “99999999”)): Orientation = 90. /* vertical */
O valor varia de -90 a 90 (graus)
Alinhamento do valor dentro da célula
excelappl:range(“A1”):HorizontalAlignment = 3.
3 é o código do alinhamento (centralizado, por exemplo). Caso queira outro, trocar o número para alinhar a direita, esquerda, etc.
Para horizontal, os códigos são:
HorizontalAlignment = 1. /* Geral */
HorizontalAlignment = 2. /* Esquerda (recuo) */
HorizontalAlignment = 3. /* Centralizado */
HorizontalAlignment = 4. /* Direita (recuo) */
HorizontalAlignment = 5. /* Preencher */
HorizontalAlignment = 6. /* Justificar */
HorizontalAlignment = 7. /* Centralizar Seleção */
Para vertical, os códigos são:
VerticalAlignment = 1 /* Superior */
VerticalAlignment = 2 /* Centralizado */
VerticalAlignment = 3 /* Inferior */
VerticalAlignment = 4 /* Justificado */
VerticalAlignment = 5 /* Distribuído */
Alinhamento de um range de células
excelappl:COLUMNS(“F:O”):SELECT.
excelappl:SELECTION:HorizontalAlignment = 3.
Ou
excelappl:range(“A” + STRING(i-linha) + “:D” + STRING(i-linha)):HorizontalAlignment = 3.
Selecionar células
1 célula
excelappl:range(“A1”):SELECT.
N células
excelappl:COLUMNS(“F:O”):SELECT.
ou
excelappl:ROWS(“2:15”):SELECT.
ou
excelappl:range(“A” + STRING(i-linha) + “:D” + STRING(i-linha)): SELECT.
Trocar Fonte
excelappl:range(“A1”):FONT:NAME = “nome-da-fonte”.
excelappl:range(“A1”):FONT:BOLD = TRUE. /* negrito */
excelappl:range(“A1”):FONT:ITALIC = TRUE.
excelappl:range(“A1”):FONT:UNDERLINE = TRUE. /* Sublinhado */
excelappl:range(“A1”):FONT:SIZE = 12.
excelappl:range(“A1”):Style = “comma” /* style = aplica um tipo de fonte na célula.
excelappl:range(“A1”):font:colorindex = 2. /* vide tabela de cores abaixo */
obs.: O range pode ser substituído por controle de variáveis como exemplo abaixo:
excelappl:range(STRING(c-coluna[1]) + STRING(i-linha, “99999999”) + “:” + STRING(c-coluna[4]) + STRING((i-linha + 5), “99999999”)):FONT:size = 12.
Trocar cor da célula
excelappl:range(“A1”):interior:colorindex = 10. /* 10 é o código da cor. */
Tabela de cores
Vide tabela de cores mais usadas (precisando de outra cor, tem que testar):
01 preto
02 branco
03 vermelho
04 verde limão
05 azul
06 amarelo
07 rosa
08 azul claro
09 marron
10 verde abacate
11 azul marinho
12 terra

https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html 4/11
13/09/2019 Excel e Progress - Guia completo - Temp Table
13 margenta
14 verde
15 cinza claro
16 cinza
17 azul marinho claro
18 roxo
19 amarelo claro
20 azul claro
21 cor de uva
22 vermelho claro
23 azul celeste
24 roxo claro
25 azul marinho
26 rosa
27 amarelo
28 azul
34 azul clarinho
44 laranja claro
45 laranja meio claro
46 laranja escuro
O valor máximo é 55.
Padrões (Sombreamento de célula)
excelappl:range(“P” + STRING(i-linha)):interior:Pattern = 9.
9 é um dos padrões, verificar os outros no Excel.
Congelar painéis
excelappl:range(“A” + STRING(i-linha, “99999999”)):SELECT. /* precisa selecionar as células primeiro */
excelappl:ActiveWindow:FreezePanes = True.
Autofiltro
excelappl:range(“A” + STRING(i-linha, “99999999”)):SELECT. /* precisa selecionar as células primeiro */
excelappl:range(“A” + STRING(i-linha, “99999999”)):autofilter(,,,).
Autoajuste de células
excelappl:Cells:SELECT. /* precisa selecionar todas primeiro */
excelappl:Cells:EntireColumn:AutoFit.
Esse comando simula a ação de clicar no quadrado superior esquerdo entre as linhas e colunas (SELECT) e dar um duplo clique em uma das divisões de células para
autoajuste (AUTOFIT)
Inserir Bordas
– Borda ao redor de uma seleção
excelappl:range(“A6:A8”):borderaround(1,,48).
excelappl:range(“A14:B18”):borderaround(1,3,1).
Onde (1,3,1) segue a seguinte regra:
1 – Estilo da Linha (LineStyle)
3 – Grossura da linha (Weight)
1 – Cor da linha (ColorIndex)
– Bordas individuais
excelappl:Range(“b10:d10”):Borders(8):LineStyle = 12.
excelappl:Range(“d10:d20”):Borders(2):LineStyle = 10.
excelappl:Range(“b20:d20”):Borders(4):LineStyle = 12.
excelappl:Range(“b10:b20”):Borders(1):LineStyle = 12.
excelappl:Range(“A” + string(i-linha)):Borders(8):Weight = 3.
excelappl:Range(“A” + string(i-linha)):Borders(2):Weight = 2.
excelappl:Range(“A” + string(i-linha)):Borders(4):Weight = 2.
excelappl:Range(“A” + string(i-linha)):Borders(1):Weight = 3.
Obs.: varia de 1 a 4
excelappl:Range(“b10:d10”):Borders(8):ColorIndex = 1.
excelappl:Range(“d10:d20”):Borders(2):ColorIndex = 1.
excelappl:Range(“b20:d20”):Borders(4):ColorIndex = 2.
excelappl:Range(“b10:b20”):Borders(1):ColorIndex = 2.
Código para Borders
01 coluna esquerda
02 coluna direita
03 linha inferior
04 linha inferior
05 descendo direita
06 subindo direita
07 nada
08 linha superior
Inserir Figura, Desenho
chworkSheet:Pictures:Insert(“C:\temp\windows.jpg”):Select
Quebra de Página
Para inserir uma quebrar pagina no Excel.
1a forma:
chWorksheet:HPageBreaks:Add(chWorksheet:Range(“A45”)). /* Horizontal */
chWorksheet:VPageBreaks:Add(chWorksheet:Range(“L1”)). /* Vertical */
obs.: não é necessário utilizar os dois, pode-se usar apenas um de acordo com a necessidade.
Lembrando que a quebra pode ser em uma célula variável, nesse caso fica assim:

https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html 5/11
13/09/2019 Excel e Progress - Guia completo - Temp Table
1 chWorkSheet:HPageBreaks:Add(chWorksheet:Range("A" + STRING(i-linha))). /* onde i-linha é a variável de controle */
2 2a forma:
3 chBreakLine = chWorkSheet:Rows(STRING(i-linha)). /* Horizontal */
4 chBreakLine = chWorkSheet:COLUMNS("20"). /* Vertical */
5 chWorkSheet:HPageBreaks:Add(chBreakLine).
6 IMPORTANTE: A quebra de página não funciona se os tamanhos de altura e largura da página forem especificados como modelo abaixo:
7 chWorkSheet:PageSetup:Zoom = FALSE.
8 chWorkSheet:PageSetup:FitToPagesWide = 1.
9 chWorkSheet:PageSetup:FitToPagesTall = 10.
10 PARA FUNCIONAR, O ZOOM NÃO PODE ESTAR DESABILITADO.
11 chWorkSheet:PageSetup:Zoom = 100. /* PODE SER OUTRO VALOR, 70 POR EXEMPLO */

Manipulação do arquivo
Mostrar mensagens de Alerta (confirmação para salvar ou imprimir arquivos)
excelappl:APPLICATION:DisplayAlerts = FALSE. (ou TRUE)
Esse comando é importante para controlar as mensagens do Excel. Por exemplo, para imprimir ou salvar um arquivo onde você não queira que aparece as mensagens
de confirmação, basta deixar o parâmetro como FALSE. Sugiro colocar sempre.
Salvar arquivos
excelappl:Workbooks:Item(1):SaveAs(“c:\temp\teste.xls”,,,,,,).
Cada vírgula representa um parâmetro:
Os parâmetros do SaveAs são:
1 – Nome do arquivo
2 – Formato do arquivo (opcional)
3 – Senha (opcional)
4 – Senha para Escrita (opcional)
5 – Somente leitura (True or false) (opcional)
6 – Criar Backup (True or false) (opcional)
Obs.: é comum usar apenas o Nome do arquivo conforme exemplo acima.
Visualizar a impressão
excelappl:VISIBLE = TRUE. /* para funcionar a planilha tem que estar visível */
excelappl:ActiveWindow:SelectedSheets:PrintPreview.
Imprimir arquivos
excelappl:ActiveWindow:SelectedSheets:Printout.
Ou passando parâmetros:
Excelappl:ActiveWindow:SelectedSheets:PrintOut(1,true)
Onde: Copies:=1, Collate:=True
Verificar outros parâmetros do Excel caso necessário.
Obs.: para a impressão, sugiro deixar a planilha com “visible” = false e DisplayAlerts = False conforme modelo abaixo e sempre selecionar as planilhas a serem
impressas antes de executar o comando.
excelappl:worksheets:ITEM(1):SELECT. /* selecionar a(s) planilha(s) a ser(em) impressa(s) */
excelappl:VISIBLE = FALSE.
excelappl:ActiveWindow:SelectedSheets:Printout.
excelappl:APPLICATION:DISPLAYALERTS = FALSE.
Obs2.: Imprime a planilha na impressora padrão do Windows.
Nota Importante: Verificar se a versão do Excel utilizada possui o comando desejado. Por exemplo, a configuração de campo para Separador Decimal não
existe no Excel 2000, portanto o comando não vai funcionar.
Dica muito importante:
Todos os comandos podem ser obtidos através do próprio Excel através de Macro.
Para isso, basta abrir o Excel, escolher a opção FERRAMENTAS / MACRO / GRAVAR NOVA MACRO. (Anote o nome da Macro) e não fechar a macro – (parar
gravação – quadrado / stop) na janelinha de parâmetro da Macro, até executar as tarefas necessárias.
Com essa janela da macro aberta, realizar todas as alterações desejadas, como configuração de célula, configuração de página, utilização dos botões do Excel, etc.
Depois de terminado, parar a macro (quadradinho da janela da macro).
Escolher a opção FERRAMENTAS / MACRO / MACRO (alt + F8), selecionar a macro criada e clicar no botão Editar. Verificar o código gerado e adaptar com os
comandos progress.
Caso o comando não seja exatamente igual, é possível ver a sintaxe do comando no progress através do Pro Tool (componente Progress COM Object Viewer – Lupa
com setinhas vermelhas)
Abrir o componente do Excel conforme modelo abaixo:
Note a sintaxe do comando RANGE do Progress:
<com-handle> é a variável definida no seu programa
Value é o comando desejado
= <anytype>-var é o valor que deseja colocar na célula
Exemplo prático:
excelappl:range(“A1”):VALUE = d-valor.
Segue abaixo modelo simples de utilização do Progress x Excel.

1 /******************************************************************************\
2 ** Exemplo de programa de impressão Progress x Excel **
3 ** Marcio Sacramoni **
4 ** marcio@kconsulting.com.br **
5 \******************************************************************************/
6 /* Obs.: os comandos de formatação de célula são opcionais, se não informados, vão respeitar os padrões do Excel.
7 Valido para toda a formatação: bordas, cores, tamanhos (de letra, linhas, colunas), tipo de valor (texto, numérico), zoom de pagina, alinhamento, etc */
8 DEF VAR excelappl AS COM-HANDLE NO-UNDO.
9 DEF VAR ChWorkSheet AS COM-HANDLE NO-UNDO.
10 DEF VAR i-linha AS INTE NO-UNDO.
11 DEF VAR c-modelo AS CHAR NO-UNDO.
12 DEF VAR l-imprime AS LOGICAL INIT NO NO-UNDO.
13 DEF VAR i-coluna AS INTEGER NO-UNDO.
14 DEF VAR c-coluna AS CHAR EXTENT 256 NO-UNDO
15 INITIAL ["A","B","C","D","E","F","G","H","I","J","K","L","M",
16 "N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
17 "AA","AB","AC","AD","AE","AF","AG","AH","AI","AJ","AK","AL","AM",
18 "AN","AO","AP","AQ","AR","AS","AT","AU","AV","AW","AX","AY","AZ",
19 "BA","BB","BC","BD","BE","BF","BG","BH","BI","BJ","BK","BL","BM",

https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html 6/11
13/09/2019 Excel e Progress - Guia completo - Temp Table
20 "BN","BO","BP","BQ","BR","BS","BT","BU","BV","BW","BX","BY","BZ",
21 "CA","CB","CC","CD","CE","CF","CG","CH","CI","CJ","CK","CL","CM",
22 "CN","CO","CP","CQ","CR","CS","CT","CU","CV","CW","CX","CY","CZ",
23 "DA","DB","DC","DD","DE","DF","DG","DH","DI","DJ","DK","DL","DM",
24 "DN","DO","DP","DQ","DR","DS","DT","DU","DV","DW","DX","DY","DZ",
25 "EA","EB","EC","ED","EE","EF","EG","EH","EI","EJ","EK","EL","EM",
26 "EN","EO","EP","EQ","ER","ES","ET","EU","EV","EW","EX","EY","EZ",
27 "FA","FB","FC","FD","FE","FF","FG","FH","FI","FJ","FK","FL","FM",
28 "FN","FO","FP","FQ","FR","FS","FT","FU","FV","FW","FX","FY","FZ",
29 "GA","GB","GC","GD","GE","GF","GG","GH","GI","GJ","GK","GL","GM",
30 "GN","GO","GP","GQ","GR","GS","GT","GU","GV","GW","GX","GY","GZ",
31 "HA","HB","HC","HD","HE","HF","HG","HH","HI","HJ","HK","HL","HM",
32 "HN","HO","HP","HQ","HR","HS","HT","HU","HV","HW","HX","HY","HZ",
33 "IA","IB","IC","ID","IE","IF","IG","IH","II","IJ","IK","IL","IM",
34 "IN","IO","IP","IQ","IR","IS","IT","IU","IV"].
35 CREATE "excel.application" excelappl.
36 excelappl:workbooks:ADD().
37 /* Caso queira abrir um modelo, descomentar o trecho abaixo e comentar o ADD() acima
38 assign c-modelo = "c:\temp\modelo.xlt".
39 excelappl:workbooks:ADD(c-modelo). */
40 /* o numero 1 dentro do comando ITEM é a pasta a ser selecionada, caso queira a segunda planilha, informar ITEM(2), ou ainda ITEM(i-pasta) onde i-pasta é uma v
41 excelappl:worksheets:ITEM(1):SELECT.
42 chWorkSheet = excelappl:Sheets:Item(1).
43 excelappl:VISIBLE = FALSE. /* Pode ser true, o excel será aberto durante a montagem. Cuidado para nao clicar em nenhuma célula ate o final do processamento, po
44 excelappl:worksheets:ITEM(1):NAME = 'RD' NO-ERROR.
45 excelappl:ActiveWindow:DisplayGridlines = False.
46 excelappl:ActiveWindow:Zoom = 75. /* zoom do arquivo, não confundir com % de zoom da impressão */
47 chWorkSheet:PageSetup:RightFooter = "PAGINA: " + "&P/&N".
48 /* chWorkSheet:PageSetup:Zoom = 60. */ /* ajusta a impressão para 60 do tamanho */
49 /* chWorkSheet:PageSetup:FitToPagesWide = 1. */
50 /* chWorkSheet:PageSetup:FitToPagesTall = i-pagina. */
51 excelappl:range("A1"):SELECT.
52 ASSIGN i-linha = 1.
53 excelappl:Rows(STRING(i-linha, "99999999") + ":" + STRING(i-linha, "99999999")):RowHeight = 20.
54 excelappl:range("A" + STRING(i-linha) + ":C" + STRING(i-linha)):Merge.
55 excelappl:range("A" + STRING(i-linha)):HorizontalAlignment = 3. /* Centralizado */
56 excelappl:range("A" + STRING(i-linha)):FONT:size = 16.
57 excelappl:range("A" + STRING(i-linha, "99999999")):Font:Bold = TRUE.
58 excelappl:range("A" + STRING(i-linha) + ":C" + STRING(i-linha)):borderaround(1,2,1).
59 excelappl:range("A" + STRING(i-linha)):VALUE = "Teste de Impressao".
60 ASSIGN i-linha = i-linha + 1.
61 excelappl:range("A" + STRING(i-linha) + ":C" + STRING(i-linha)):interior:colorindex = 15.
62 excelappl:COLUMNS("A:A"):ColumnWidth = 17.00.
63 excelappl:COLUMNS("B:B"):ColumnWidth = 40.00.
64 excelappl:range("A" + STRING(i-linha)):VALUE = "Item".
65 excelappl:range("B" + STRING(i-linha)):VALUE = "Descricao".
66 /* a coluna também pode ser controlada por variáveis */
67 excelappl:range(STRING(c-coluna[3]) + STRING(i-linha)):VALUE = "Peso".
68 ASSIGN i-linha = i-linha + 1.
69 FOR EACH ITEM NO-LOCK:
70 excelappl:range("A" + STRING(i-linha)):numberformat = "@". /* transforma em texto */
71 excelappl:range("A" + STRING(i-linha)):VALUE = ITEM.it-codigo.
72 excelappl:range("B" + STRING(i-linha)):numberformat = "@". /* transforma em texto */
73 excelappl:range("B" + STRING(i-linha)):VALUE = ITEM.desc-item.
74 excelappl:range("B" + STRING(i-linha, "99999999")):ShrinkToFit = TRUE. /* ajusta o conteudo para caber na célula. Tem que vir depois da inserção do valor. */
75 excelappl:range("C" + STRING(i-linha)):numberformat = "#.##0,00".
76 excelappl:range("C" + STRING(i-linha)):HorizontalAlignment = 4. /* Direita */
77 excelappl:range("C" + STRING(i-linha)):VALUE = ITEM.peso-liquido.
78 excelappl:range("A" + STRING(i-linha) + ":A" + STRING(i-linha)):borderaround(1,2,1).
79 excelappl:range("B" + STRING(i-linha) + ":B" + STRING(i-linha)):borderaround(1,2,1).
80 excelappl:range("C" + STRING(i-linha) + ":C" + STRING(i-linha)):borderaround(1,2,1).
81 ASSIGN i-linha = i-linha + 1.
82 IF i-linha > 20 THEN LEAVE. /* só para não ficar muito grande */
83 END.
84 ASSIGN i-linha = i-linha + 1.
85 excelappl:range("B" + STRING(i-linha)):VALUE = "Peso Total".
86 excelappl:range("C" + STRING(i-linha)):numberformat = "#.##0,00".
87 excelappl:range("B" + STRING(i-linha)):HorizontalAlignment = 4. /* Direita */
88 excelappl:range("C" + STRING(i-linha)):HorizontalAlignment = 4. /* Direita */
89 excelappl:range("C" + STRING(i-linha)):Font:Bold = TRUE.
90 excelappl:range("C" + STRING(i-linha)):VALUE = "=SUM(C3:C" + STRING(i-linha - 1, "999999") + ")".
91 excelappl:range("A" + STRING(i-linha) + ":C" + STRING(i-linha)):borderaround(1,2,1).
92 excelappl:worksheets:ITEM(1):SELECT.
93 excelappl:range("A1"):SELECT.
94 /* chWorkSheet:PageSetup:Zoom = FALSE. */
95 /* chWorkSheet:PageSetup:FitToPagesWide = 1. */
96 /* chWorkSheet:PageSetup:FitToPagesTall = 10. */
97 IF l-imprime = YES THEN
98 DO:
99 excelappl:VISIBLE = FALSE.
100 excelappl:ActiveWindow:SelectedSheets:Printout.
101 excelappl:APPLICATION:DISPLAYALERTS = FALSE.
102 excelappl:QUIT(). /* somente utilizar o commando quit caso não queira visualizar o arquivo na tela */
103 END.
104 ELSE
105 excelappl:VISIBLE = TRUE.
106 RELEASE OBJECT excelappl NO-ERROR.
107 RELEASE OBJECT chWorksheet NO-ERROR.

https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html 7/11
13/09/2019 Excel e Progress - Guia completo - Temp Table

Relacionados

(https://temptable.com.br/2015/10/comando-
(https://temptable.com.br/2017/11/mudanca-
(https://temptable.com.br/2015/10/gerar-
(https://temptable.com.br/2015/11/colocar-
(https://temptable.com.br/2015/11/como-
(https://temptable.com.br/2015/10/dicas-
para-excel.html) nos-relatorios- relatorio-em-excel- execucao- abrir-o-navegador- de-performance-
Comandos para excel-para-office- de-forma- automatica-em- pelo- progress.html)
Excel e-libreoffice.html) simples.html) tela.html) progress.html) Dicas de
(https://temptable.com.br/2015/10/comando-
Mudança nos Gerar relatório em Criar execução Como abrir o Performance
para-excel.html) relatórios Excel Excel de forma automática em navegador pelo Progress
para Office e simples tela de tempo em progress (https://temptable.com.br/2015/10/dicas-
LibreOffice (https://temptable.com.br/2015/10/gerar-
tempo (https://temptable.com.br/2015/11/como-
de-performance-
(https://temptable.com.br/2017/11/mudanca-
relatorio-em-excel- (https://temptable.com.br/2015/11/colocar-
abrir-o-navegador- progress.html)
nos-relatorios- de-forma- execucao- pelo-
excel-para-office- simples.html) automatica-em- progress.html)
e-libreoffice.html) tela.html)

Compartilhe isso:

 Facebook (https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html?share=facebook&nb=1)

 Pinterest (https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html?share=pinterest&nb=1)

 Imprimir (https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html#print)

 E-mail (https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html?share=email&nb=1)

POSTED UNDER OPENEDGE PROGRESS (HTTPS://TEMPTABLE.COM.BR/CATEGORY/PROGRESS4GL)

TAGGED EXCEL (HTTPS://TEMPTABLE.COM.BR/TAG/EXCEL) PROGRESS (HTTPS://TEMPTABLE.COM.BR/TAG/PROGRESS) PROGRESS 4GL

(HTTPS://TEMPTABLE.COM.BR/TAG/PROGRESS-4GL) RELATÓRIO EM EXCEL (HTTPS://TEMPTABLE.COM.BR/TAG/RELATORIO-EM-EXCEL)

 Atualizar o Magento 1.9.x via SSH Gravit Designer – aplicativo de design vetorial
(https://temptable.com.br/2017/06/atualizar-o-magento-1-9-x-via- (https://temptable.com.br/2017/06/gravit-io-aplicativo-de-design-
ssh.html) vetorial.html) 

3 thoughts on “Excel e Progress – Guia completo”

Pingback: Mudança nos relatórios Excel para Office e LibreOffice - Temp Table
(https://temptable.com.br/2017/11/mudanca-nos-relatorios-excel-para-office-e-libreoffice.html)

Stephenson Silva dos Santos Oliveira


18/07/2019 às 8:27 pm (https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html#comment-726)

O Sacramoni manja muito!


Show de bola.

 Responder

Cláudio Natalino de Brito


https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html 8/11
13/09/2019 Excel e Progress - Guia completo - Temp Table
19/07/2019 às 11:09 am (https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html#comment-727)

Legal!!! Muito bom mesmo!

 Responder

Deixe uma resposta


O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Comentário

Nome *

E-mail *

Site

Notifique-me sobre novos comentários por e-mail.

Notifique-me sobre novas publicações por e-mail.

Publicar comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados
(https://akismet.com/privacy/).

Pesquisar … PESQUISAR

POSTS RECENTES

Insert em MySQL via Progress (https://temptable.com.br/2018/10/insert-em-mysql-via-progress.html)


Tutorial de como utilizar o GitHub no seu dia-a-dia (https://temptable.com.br/2018/03/tutorial-de-como-utilizar-o-github-no-seu-dia-a-dia.html)
8 Ferramentas para construção de sites e páginas (https://temptable.com.br/2018/03/812.html)
Atualizar Magento via SSH (https://temptable.com.br/2018/02/atualizar-magento-via-ssh.html)
Mudança nos relatórios Excel para Office e LibreOffice (https://temptable.com.br/2017/11/mudanca-nos-relatorios-excel-para-office-e-libreoffice.html)

ASSINAR AO BLOG TEMP TABLE

Informe seu e-mail para receber aviso de novas publicações por e-mail.

Endereço de email

Assinar

CURTA NO FACEBOOK (HTTPS://WWW.FACEBOOK.COM/TEMPTABLEBR)

https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html 9/11
13/09/2019 Excel e Progress - Guia completo - Temp Table

Temp Table
86 curtidas

Curtir Página Compartilhar

Seja o primeiro de seus amigos a curtir isso.

HOSPEDAGEM DE SITES

(https://www.hostgator.com.br/24638-4-1-44.html)

PROMOÇÃO

CURTA NO FACEBOOK (HTTPS://WWW.FACEBOOK.COM/TEMPTABLEBR)

Temp Table
86 curtidas

Curtir Página Compartilhar

Seja o primeiro de seus amigos a curtir isso.

SIGA NO GOOGLE+ (HTTPS://PLUS.GOOGLE.COM/U/0/B/112365704974930825580/+TEMPTABLEBRASIL/POSTS)

CONTATO

Seu nome (obrigatório)

Seu e-mail (obrigatório)

Assunto

Sua mensagem

[recaptcha id:captcha theme:dark]

Enviar

https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html 10/11
13/09/2019 Excel e Progress - Guia completo - Temp Table

Copyright Temp Table. Todos direitos reservados.


Proudly powered by WordPress (http://wordpress.org). | Theme: Awaken by ThemezHut (http://themezhut.com/themes/awaken).

https://temptable.com.br/2017/06/excel-e-progress-guia-completo.html 11/11

Potrebbero piacerti anche