Programação com Excel para Economia & Gestão Vol. II

11

description

Este livro de programação completa a trilogia da autora - Excel para Economia & Gestão - que visa a promoção das folhas de cálculo como instrumentos poderosos n resolução de questões fundamentais da Economia e da Gestão. O primeiro livro, Exercícios Resolvidos com Excel para Economia & Gestão, fomenta a utilização das folhas de cálculo, ilustrando as facilidades do Microsoft Office 2007 através da resolução de exercícios de aplicação variada; o segundo, Programação com Excel para Economia & Gestão Vol. I, potencia, automatiza e estende as funcionalidades do Excel, recorrendo à metodologia Top-down, à algoritmia e à programação estruturada em Visual Basic for Applications. Por último, este livro avança na automatização, extensão e personalização das funcionalidades do Excel, combinando os três paradigmas de programação - Programação Estruturada, Programação Orientada por Objectos e Programação Guiada por Eventos -, suportados pelo VBA.

Transcript of Programação com Excel para Economia & Gestão Vol. II

Page 1: Programação com Excel para Economia & Gestão Vol. II
Page 2: Programação com Excel para Economia & Gestão Vol. II

11 Introdução

© FCA - Editora de Informática 1

Este livro de programação avançada completa a trilogia de Excel para Economia

& Gestão, que tem em vista a promoção das folhas de cálculo como instrumentos

poderosos a actuarem na formulação, experimentação e automatização de soluções

para questões de Economia e de Gestão.

O primeiro livro, Exercícios Resolvidos com Excel para Economia & Gestão,

fomenta a utilização das folhas de cálculo, ilustrando as facilidades do Microsoft

Office 2007, através da resolução de exercícios de aplicação variada nas áreas da

Economia e da Gestão e disciplinas auxiliares. A prática subjacente à resolução

destes exercícios conduz, naturalmente, o utilizador à procura de meios de automa-

tização de tarefas morosas e à definição de funções que satisfaçam cálculos

específicos.

O segundo livro, Programação com Excel para Economia & Gestão Volume I,

potencia a utilização do Excel através da programação em Visual Basic for

Applications. O VBA, linguagem de programação embutida naquela aplicação da

Microsoft, aliada à metodologia Top-down e à algoritmia, possibilita a automa-

tização e a extensão das funcionalidades do Excel. O paradigma da programação

estruturada, que assenta naquelas metodologias, apresenta-se ao utilizador como um

desafio ao desenvolvimento de programas que especializem as funcionalidades

genéricas do Excel com vista à resolução eficiente e eficaz de problemas concretos.

O terceiro livro, Programação com Excel para Economia & Gestão Volume II,

combina os três paradigmas de programação: programação estruturada, programação

orientada por objectos e programação guiada por eventos – que o VBA suporta

para progredir na automatização e extensão das funcionalidades do Excel. O VBA

não é uma linguagem de programação inteiramente orientada por objectos, nem

inteiramente guiada por eventos. Porém, o VBA permite a manipulação do modelo

de objectos embutido no Excel, a definição de novas classes de objectos e o

desenvolvimento de interacções entre estes dois modelos, constituindo uma

poderosa ferramenta de desenvolvimento de soluções de informática. Os eventos

são também objectos, o que alarga o espectro de actuação desta ferramenta. Por

outro lado, a tecnologia de Automation que o VBA serve, permite que o Excel use

as funcionalidades de outras aplicações como se fossem genuinamente suas.

O Programação com o Excel para Economia & Gestão Volume II visa, assim,

explicar o desenvolvimento de interacções entre o modelo de objectos do Excel

com as classes de objectos definidas pelo utilizador e com os modelos de objectos

Page 3: Programação com Excel para Economia & Gestão Vol. II

Programação com Excel para Economia & Gestão Volume II

© FCA – Editora de Informática 2

de outras aplicações da Microsoft. Caminhamos, por conseguinte, para a persona-

lização do Excel no sentido de especializarmos esta poderosa aplicação genérica

no desenvolvimento de problemas concretos de Economia e de Gestão.

O estudo do Programação com Excel para Economia & Gestão Volume II consiste

em dez capítulos organizados como mostra Fig. 1.1.

Paradigmas de

Programação

2. Programação Estruturada

Programação para o

Excel

3. Programação Orientada por Objectos

4. Programação Guiada por Eventos

5. Programação para Objectos e Eventos

6. Interfaces Gráficas7. Programação de Componentes

Projectos

9. Integração do Excel

com Outras Aplicações

1. Introdução

10. Reflexões sobre a Programação com o Excel

Programação para

Economia & Gestão

Conclusões e lições para

o futuro

8. Programação de

Interfaces Gráficas

Fig. 1.1: Estrutura do Programação com Excel para Economia & Gestão Volume II

O estudo remanescente do Programação Volume II desenvolve-se nos seguintes

capítulos que sumariamos sucintamente:

Os capítulos 2, 3 e 4 caracterizam os paradigmas de programação que fornecem os

métodos e as ferramentas para a automatização e a extensão das funcionalidades do

Microsoft Excel 2007. O Capítulo 2 revê as figuras fundamentais da programação

estruturada e a sua implementação em VBA para o Excel. Explica concisamente os

diversos tipos de dados, as operações de que podem ser operandos, as estruturas

de controlo de execução, a programação modular e as estruturas lineares de dados.

Cria, por conseguinte, a infra-estrutura de conceitos que sustenta a subsequente

exploração dos paradigmas de programação orientada por objectos e de progra-

mação guiada por eventos.

O Capítulo 3 explica os conceitos de classe e de objecto, e os princípios

fundamentais da Programação Orientada por Objectos. Explica a abstracção, a

encapsulação, a herança e o polimorfismo, e discute e ilustra a sua implementação

em VBA para o Excel.

Page 4: Programação com Excel para Economia & Gestão Vol. II

Introdução

© FCA - Editora de Informática 3

O Capítulo 4 explica os conceitos de eventos e de resposta a eventos, e as figuras

de publicação, notificação e subscrição de eventos. Ilustra a sua implementação

em VBA para o Excel, elaborando respostas de execução automática para várias

categorias de eventos, nomeadamente eventos predefinidos para o modelo de

objectos do Excel, eventos temporais, erros e eventos definidos pelo utilizador.

Com esta infra-estrutura de conhecimento, os capítulos 5 e seguintes, até ao 9,

demonstram a manipulação programática do modelo de objectos do Excel e dos

objectos instanciados de classes definidas pelo utilizador. Objectos, eventos,

componentes dos projectos de VBA e a sua integração com modelos de objectos

de outras aplicações da Microsoft são programados com vista à automatização

crescente e expansão das funcionalidades do Excel.

O Capítulo 5 combina a programação orientada por objectos com a programação

guiada por eventos para explicar a funcionalidade de vários objectos do modelo de

classes e subclasses do Excel, nomeadamente livros, folhas de cálculo e ranges.

Cria novas classes que interagem entre elas e com o modelo de objectos do Excel,

promovendo a encapsulação e a reutilização de código de VBA.

O Capítulo 6 apresenta as interfaces gráficas e os controlos gráficos que nelas

podem ser colocados para leitura e afixação de dados. Insiste na manipulação das

propriedades e dos métodos que as interfaces e os controlos gráficos expõem, e

estende as suas funcionalidades através da elaboração de procedimentos de

resposta aos eventos predefinidos.

O Capítulo 7 apresenta uma visão parcial e simplificada da biblioteca de objectos

VBIDE que nos permite manipular, em tempo de execução, as componentes dos

programas de VBA, nomeadamente os projectos e os módulos standard, módulos

de classe e os módulos de código associados aos livros e folhas de cálculo. Propõe

procedimentos que listam as propriedades das componentes internas e externas

que determinado projecto referencia, procedimentos que adicionam e removem

essas referências, e procedimentos que geram e alteram linhas de código de VBA.

O Capítulo 8 instancia e manipula UserForms e controlos gráficos em tempo de

execução, recorrendo à programação das componentes dos projectos de VBA e à

programação de objectos e eventos. Apresenta vários exemplos para demonstrar a

efectuação das operações principais com UserForms e controlos em tempo de

execução.

O Capítulo 9 expande as capacidades do Excel, a jusante e a montante da

efectuação de cálculos, integrando, por referenciação e aplicação do paradigma da

programação orientada por objectos, outros pacotes da Microsoft que se baseiam

na tecnologia Automation. Ilustra esta integração com vários exemplos de

Page 5: Programação com Excel para Economia & Gestão Vol. II

Programação com Excel para Economia & Gestão Volume II

© FCA – Editora de Informática 4

processamento em que o Excel usa o Word, o PowerPoint e o Visio do Microsoft

Office para escrever textos, apresentar slides e desenhar diagramas.

Finalmente, o Capítulo 10 sumaria a aprendizagem da programação com o Excel e

reflecte sobre a integração orientada por objectos de várias aplicações. O Excel

surge como componente de soluções de software para problemas específicos,

relegando para planos inferiores as suas características gerais de pacote que serve

todos os problemas.

Page 6: Programação com Excel para Economia & Gestão Vol. II

66 Interfaces Gráficas Definidas

pelo Utilizador

© FCA - Editora de Informática 117

[…]

Botão de interruptor

Um botão de interruptor – Toggle Button – tem dois estados possíveis, verdadeiro

e falso, que alternam entre escolhas sucessivas.

A Fig. 6.7 mostra os estados possíveis de um botão de interruptor:

• botão, inicialmente no estado de desligado ou falso, passa ao estado de

ligado ou verdadeiro se for premido;

• estado alterna quando o botão é premido sucessivamente.

Neste exemplo, a mudança de estado do botão de interruptor altera a designação

inscrita no botão e a cor do fundo do UserForm.

Private Sub ToggleButton1_Click()

Rem Instruções de resposta ao

clique do botão

End Sub

Fig. 6.7: UserForm com um botão de interruptor que responde ao clique do botão.

Botão giratório

O botão giratório – SpinButton – é composto por duas setas, em direcções opostas,

que permitem incrementar ou decrementar um valor.

A Fig. 6.8 mostra a incrementação sucessiva de um valor por acção de um botão

giratório.

Private Sub SpinButton2_Change()

Page 7: Programação com Excel para Economia & Gestão Vol. II

Programação com Excel para Economia & Gestão Volume II

© FCA – Editora de Informática 118

Rem Instruções de resposta à alteração do valor

End Sub

Fig. 6.8: UserForm com um botão giratório que responde à incrementação e decrementação de um valor

Programas de aplicação

1. Inquérito sobre grupos etários

Desenhe a seguinte interface gráfica:

���� Criação de um UserForm com as seguintes propriedades:

UserForm Name Caption Width Height

UFidades Inquérito 170 160

���� Colocação, neste UserForm, de um caixilho com seis botões de opção e um botão

de interruptor com as seguintes propriedades:

Control Name Caption Group Name

Tab Index

Width Height

Frame1 FRidade Idade 144 84

OptionButton OP1 <20 Idade 1 38 18

OptionButton OP2 20-35 Idade 2 38 18

OptionButton OP3 36-45 Idade 3 38 18

OptionButton OP4 46-59 Idade 4 38 18

OptionButton OP5 60-70 Idade 5 38 18

Page 8: Programação com Excel para Economia & Gestão Vol. II

Interfaces Gráficas Definidas pelo Utilizador

© FCA - Editora de Informática 119

OptionButton OP6 >70 Idade 6 38 18

ToggleButton TB1 Menos 33 52

���� Colocação, neste UserForm, de três botões de comando com as seguintes

propriedades:

Control Name Caption Group Name

Tab Index

Width Height

CommandButton CBgrav Gravar 30 24

CommandButton CBprox Próximo 36 24

CommandButton CBfim Fim 24 24

2. Funcionalidade do botão de interruptor

Relativamente à interface gráfica desenhada no exercício anterior, atribua

ao botão de interruptor a seguinte funcionalidade:

• Premir o botão com a inscrição Menos diminui o número de escalões

etários, estreitando o UserForm e o caixilho de opções. O botão

passa a oferecer a opção de aumento;

• Premir o botão com a inscrição Mais aumenta o número de escalões

etários, alargando o UserForm e o caixilho de opções. O botão passa

a oferecer a opção de diminuição.

���� O procedimento TB1_Click, residente no módulo de código de UFidades,

diminui e aumenta, alternadamente, a largura do userform e do caixilho de

opções.

Private Sub TB1_Click()

If TB1.Caption = "Mais" Then

TB1.Caption = "Menos"

Me.Width = 170

FRidade.Width = 144

Else

TB1.Caption = "Mais"

Me.Width = 110

FRidade.Width = 95

End If

End Sub

Page 9: Programação com Excel para Economia & Gestão Vol. II

77 Programação de Componentes

de Projectos de VBA

© FCA - Editora de Informática 169

[…]

7.3.4. MANIPULAÇÃO PROGRAMÁTICA DE CÓDIGO DE VBA

O modelo de objectos da VBIDE contém classes que permitem criar, substituir e

apagar linhas de código de VBA em tempo de execução.

Demonstramos estas operações através de pequenos programas que referenciam

módulos standard, módulos de classe e módulos de código, associados a folhas de

cálculo e a interfaces gráficas.

Geração de código de VBA

VarModulo.AddFromString Arg1

Arg1 – variável alfanumérica

adiciona as instruções de VBA guardadas numa variável alfanumérica ao final do

módulo.

O procedimento GerarCodigo cria, no módulo standard NovoCodigo, o procedi-

mento Mensagem.

Sub GerarCodigo()

Dim CM As CodeModule, Prog As String

Set CM=Application.VBE.ActiveVBProject.

VBComponents("NovoCodigo").CodeModule

Prog = "Public Sub Mensagem" + chr(13)

Prog = Prog + "Msgbox ""Ola, boa tarde""" + Chr(13)

Prog = Prog + "End Sub"

CM.AddFromString Prog

End Sub

Este procedimento gera, em tempo de execução, o seguinte procedimento no

módulo NovoCodigo do projecto activo:

Public Sub Mensagem()

MsgBox "Olá, boa tarde!"

End Sub

Page 10: Programação com Excel para Economia & Gestão Vol. II

99 Integração do Excel com outras

Aplicações da Microsoft

© FCA - Editora de Informática 241

O Excel pode expandir as suas capacidades, integrando as funcionalidades das outras aplicações do Microsoft Office. Pode, por exemplo, entrelaçar as suas capacidades de cálculo com as capacidades do Word, do PowerPoint ou do Visio para ler dados registados em textos, slides ou desenhos gráficos, e também para apresentar o resultado dos seus processamentos. Assim, o Excel pode ler dados de um documento do Word, processá-los e afixar os resultados do processamento em slides do PowerPoint, em diagramas do Visio ou mesmo devolvê-los ao Word.

O Excel pode, pois, adquirir capacidades a montante e a jusante, e manipulá-las como se fossem suas, beneficiando das faculdades específicas de outras aplicações. Esta integração de funcionalidades é possível entre aplicações que suportem a tecnologia Automation da Microsoft, e obedece aos princípios da Programação Orientada por Objectos.

9.1. MANIPULAÇÃO DE OBJECTOS DE OUTRAS APLICAÇÕES

O Excel pode expandir as suas capacidades, integrando e manipulando como se fossem suas as funcionalidades das outras aplicações da Microsoft, nomeadamente as aplicações do Microsoft Office. O Excel pode, por conseguinte, alargar as suas capacidades a jusante para afixar os resultados dos seus cálculos em textos, slides, diagramas, etc. Pode também expandir as suas capacidades a montante, integrando as capacidades específicas de outras aplicações para ler dados registados em textos, bases de dados, slides, diagramas, etc.

A Fig. 9.1 ilustra a expansão do Excel, a montante e a jusante, por integração com o Visio. Neste exemplo, o Excel acede aos coeficientes de uma equação de 2º. grau que estão gravados num diagrama do Visio, calcula as raízes da equação e devolve os resultados ao mesmo diagrama do Visio. Este processo de leitura de dados gravados no Visio, o seu processamento no Excel e a afixação de resultados, novamente no Visio, processa-se automaticamente sem que o utilizador seja chamado a intervir, sem duplicação de código ou de dados e sem ficheiros intermédios. À vista do utilizador tudo se processa como se o Visio fizesse parte integrante do Excel.

Page 11: Programação com Excel para Economia & Gestão Vol. II

Programação com Excel para Economia & Gestão Volume II

© FCA – Editora de Informática 242

Fig. 9.1: O Excel instancia o diagrama do Visio, lê os coeficientes da equação de 2º. grau, calcula as raízes e imprime-as no mesmo diagrama.

Esta integração de funcionalidades é possível entre aplicações que suportem a tecnologia Automation da Microsoft, e obedece aos princípios da Programação Orientada por Objectos:

• Cada aplicação expõe-se, perante as outras aplicações, como um objecto com propriedades e métodos que pode ser instanciado, referenciado e manipulado;

• A aplicação constituiu-se como o objecto raiz que dá acesso a todo o seu modelo hierárquico de objectos;

• O modelo hierárquico de objectos da aplicação pode ser instanciado e manipulado por outras aplicações através das propriedades e métodos que expõe.

Assim, programas escritos em linguagens, tais como o VBA, permitem ao Excel instanciar outras aplicações e operar os seus modelos de objectos como se fossem genuinamente seus. O Excel pode, por exemplo, instanciar o Visio, formatar uma das suas figuras geométricas invocando os respectivos métodos e atribuir à propriedade Text dessa figura o valor de um dos seus ranges. O procedimento CalculoMedia, escrito em VBA, permite ao Excel inscrever num rectângulo do Visio, o valor da média aritmética do range A1:A4. O Excel instancia o Visio, desenha um rectângulo no documento activo do Visio e atribui à sua propriedade Text o valor da média.

Sub CalculoMedia()

Dim R As Range, Media As Double

Set R = Sheets(1).Range("a1:a4")

Media = WorksheetFunction.Average(R)

Call ImpressaoNoVisio(Media): End Sub