Вы находитесь на странице: 1из 44

Disciplina: Programao em microinformtica VBA com Word / Excel / Access

(Verso 1.0)

Profs. Maria Claudia Fabiani Hamilton Martins Viana

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:2 Disciplina Programao em Microinformtica (Prg Micro) Segundo a Microsoft, desde 2002 foram vendidos mais de 60 milhes de licenas do Office. O pacote Office composto de quatro aplicativos (Power Point, Word, Excel e Access). Apesar de serem os programas mais utilizados em todo o mundo, poucos conhecem e usam seus recursos mais avanados que podem ser utilizados atravs da programao com VBA (Visual Basic for Application).

Recordaes...
Conforme visto anteriormente nesta disciplina, no Word, isso feito atravs de Macros, da seguinte maneira:

Criao de uma macro


Criar uma nova macro: Itens de menu Ferramentas / Macro / Gravar nova macro. Na janela que abrir, escolha o nome da nova macro (pode ser por exemplo, MinhaMacro) e escolha o seu documento, na caixa Armazenar macro em:. Se voc escolher Todos os documentos, a macro ficar gravada no Word que est instalado no micro. Faremos isso e ao final desta lio, ns a apagaremos. A janela para gravao da macro, ficar como o exemplo abaixo:

D um click no boto OK. Note que o apontador do mouse ficou um pouco diferente. A partir desse momento todas as aes que voc executar estaro sendo gravadas, at que voc pare a gravao, dando um click no item retangular da janela parar gravao .

Antes de parar a gravao vamos realizar algumas aes que ficaro gravadas em nossa macro. Digite por exemplo seu nome, como por exemplo: Ricardo, o Boso, formate-o

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:3 com tamanho 16, tachado e cor vermelha. Pronto podemos parar agora a gravao da macro. A partir de agora, toda vez que a macro for executada, repetir as operaes que voc realizou. Vamos test-la: - Apague o texto impresso pela macro em seu documento. - D um click para acionar o item Ferramentas do menu, selecione os subitens Macro / Macros... - Selecione a macro desejada (neste caso a macro MinhaMacro, o nome que voc escolheu). - D um click no boto Executar e note que a macro repete os passos gravados.

Criao de uma barra de ferramentas.


Vamos automatizar um pouco mais esse processo. Podemos atribuir nossa nova macro a uma barra de ferramentas j existente do Word ou ento podemos criar uma nova barra de ferramentas somente nossa, e colocar nossa macro nela. Vamos fazer isso. Inserir uma nova Barra de Ferramentas: Itens de menu Ferramentas / Personalizar... Click no boto Nova... Na janela Nova Barra de ferramentas mude o Nome da barra de ferramentas para Teste.... Na caixa Disponibilizar barra de ferramentas para: , selecione o documento no qual voc est trabalhando (Documento1). Click no boto Ok, e pronto. A est sua nova barra de ferramentas, pronta para uso. Voc pode arrast-la at a regio de barras de ferramentas do Word e ela se transformar em uma barra normal. Se voc tivesse selecionado Normal, a barra a ser criada teria sido gravada e estaria disponvel no Word do micro. Feche a janela Personalizar.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:4

Incluso de uma macro na barra de ferramentas.


Iremos agora colocar nossa macro na nova barra de ferramentas. Para isso, selecione o item de menu Ferramentas / Personalizar na guia Comandos selecione a categoria Macros. Na caixa da direita, pressione o boto esquerdo do mouse sobre a macro que lhe interessa e arraste-a at a barra de ferramentas que voc criou. Quando o apontador do mouse mudar, solte o boto do mouse. Pronto! L est a macro para ser executada. Feche a janela Personalizar.

Configurao do boto que aciona a macro.


Vamos agora mudar a aparncia desse boto que aciona a macro. Para isso, D um click no boto da macro, com o boto direito do mouse. Na lista que abrir, click em Personalizar.... Com a janela aberta, volte a clicar com o boto direito do mouse, sobre o boto da macro e em seguida, modifique, a seu gosto, o Nome:. Repita o processo e coloque um cone no boto da macro, escolhendo-o no item Alterar imagem de boto.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:5 Explore as outras possibilidades por exemplo, Editar imagem de boto. Quando terminar, s fechar essas janelas e utilizar a macro, com apenas um click do mouse. Vamos agora verificar a parte mais poderosa do uso de macros atravs do VBA. Para isso, selecione o item de menu Ferramentas / Macro / Macros..., selecione a macro que interessa e d um click sobre o boto Editar. Nesse momento o Word abre o ambiente do VBA, que muito parecido com o ambiente do Visual Basic 6.0.

O ambiente VBA.

Atravs desse ambiente, podemos fazer a programao que quisermos. Note que as frases em cor verde so comentrios (iniciam por apstrofe) sendo utilizados apenas para documentao. Obs.: O gravador de macros inclui todas as possibilidades de configurao, mesmo as desnecessrias. Podemos eliminar vrias delas, tornando a execuo mais rpida. Por exemplo, podemos eliminar as instrues: .Bold = False .Italic = False .Underline = wdUnderlineNone .UnderlineColor = wdColorAutomatic .DoubleStrikeThrough = False .Outline = False .Emboss = False

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:6 .Shadow = False .Hidden = False .SmallCaps = False .AllCaps = False .Engrave = False .Superscript = False .Subscript = False .Spacing = 0 .Scaling = 100 .Position = 0 .Kerning = 0 .Animation = wdAnimationNone

EXERCCIOS
Inclua manualmente na macro, as instrues abaixo: Selection.MoveRight Selection.Font.Color = wdColorBlack Selection.TypeParagraph Selection.TypeParagraph Selection.Font.Size = 12 Salve as modificaes efetuadas: Arquivo / Salvar normal Nossa macro agora ficar com a seguinte aparncia: Sub MinhaMacro() ' ' MinhaMacro Macro ' Macro gravada 07/04/2008 por Aula Prgmicro ' Selection.TypeText Text:="Ricardo o Boso" Selection.MoveLeft Unit:=wdCharacter, Count:=15, Extend:=wdExtend With Selection.Font .Name = "Times New Roman" .Size = 16 .StrikeThrough = True .Color = wdColorRed End With Selection.MoveRight Selection.Font.Color = wdColorBlack Selection.TypeParagraph Selection.TypeParagraph Selection.Font.Size = 12 End Sub Execute-a, verifique como funciona, analise as instrues da macro e explique o funcionamento.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:7 Obs.: Estando no ambiente do VBA voc pode obter ajuda sobre quaisquer instrues ou objetos que desejar. Para isso, selecione a instruo ou objeto e pressione a tecla F1. Por exemplo, selecione a palavra MoveRight e pressione F1. Exerccio: Altere manualmente a macro para que, aps exibir o texto, escreva seu nome em negrito, itlico e sublinhado. Aps isso, o texto deve voltar ao normal. Outro exemplo: Suponhamos que desejamos acionar a calculadora do Windows. Exerccio: Crie uma nova macro chamada Calculadora, coloque um boto em sua barra de ferramentas Teste..., com o cone de uma calculadora, sendo que quando esse boto for acionado, executado o programa calc.exe. Passos: - Ferramentas / Macro / Gravar nova macro - Nome da macro = Calculadora - Armazenar nova macro em = Documento 1 / Boto OK. - Parar gravao - Ferramentas / Macro / Macros... - Selecionar a macro Calculadora, click no boto Editar. Digitar na Sub Calculadora(): Shell ("c:\winnt\system32\calc.exe ") Obs.: a instruo acima executa o programa calc.exe que est na pasta c:\windows. Nossa Procedure ficar assim: Sub Calculadora() Shell ("c:\winnt\system32\calc.exe") execuo da calculadora. ' Calculadora Macro ' Macro gravada 08/04/99 por M & M ' End Sub - Voltar ao ambiente do Word (alt + F11). - Testar a macro. - Colocar um novo boto na barra de ferramentas para acionar a nova macro e test-lo. - Configurar o boto e test-lo.

Obs.: Voc pode exibir ou no a barra de ferramentas. Se optar por no exibi-la, clique nos itens de menu Exibir / Barra de ferramentas e desligue a opo Teste.... Exerccios: 1-Fazer uma macro que utilize variveis, inputbox e msgbox, para ser utilizada como conhecimento no exerccio seguinte.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:8 2-Fazer uma macro que quando executada, exibe uma InputBox solicitando o texto para o cabealho do documento do Word. Se nada for digitado, ao ser pressionado o boto Ok, o cabealho padro Cabealho de Documento -Para Aula Prg Micro exibido. Se um texto for digitado, esse texto ser o cabealho. 3-Uma boa maneira de transitar dados entre aplicaes Windows, pela rea de Transferncia. Modifique a macro que aciona a calculadora e faa modificaes para que o clculo efetuado na calculadora e mandado para a rea de Transferncia (Editar / Copiar), aparea no texto, como no exemplo: Valor calculado pela calculadora = 9999. Estes exerccios sero utilizados para a avaliao da aula. Quando terminar, chame o professor para obter sua nota de hoje. Aps efetuar seus testes, vamos eliminar nossas macros do Word. Para isso, d um click nos itens de menu Ferramentas/Macro/Macros selecione a macro que deseja apagar e d um click no boto Excluir.

Segunda Parte - Excel


Para iniciarmos, abra o Excel, para comearmos a criao de nossa macro, que ir acrescentar um cabealho em qualquer planilha na qual for chamada. No Excel o processo de criao de macro muito parecido com o Word. Para testar, vamos seguir os mesmos passos usados no Word para criar uma nova macro: Para isso, d um click nos itens de menu Ferramentas / Macro / Gravar nova macro. Na janela que abrir, configure o seguinte: - Mude o nome da macro para Cabealho; - No item Armazenar macro em, escolha Esta pasta de trabalho.
Obs.:Se voc escolher Pasta de trabalho pessoal de macros, a macro ficar gravada no Excel que est instalado no micro. No faremos isso. A macro que criarmos ser disponibilizada apenas na planilha que estamos desenvolvendo. Para isso, na caixa Armazenar macro em:, escolha Esta pasta de trabalho.

- Em Descrio, substitua o * por seu nome. - Click em Ok.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:9 A partir deste momento, tudo que voc fizer estar sendo gravado na macro, at que voc d um click no boto .Parar gravao.
Parar gravao

Referncia relativa

Quando parar a gravao, a macro ser gravada na forma de comandos VBA, com o nome que voc escolheu. A macro que iremos criar far o seguinte: - Insere uma linha a partir da primeira linha - Posiciona o foco na clula A1 e a formata com tamanho 14; - Digita o texto Programao em microinformtica, na clula A1; Ento no Excel, siga os seguintes passos: . Selecione a primeira linha e insira uma nova linha: . Posicione o cursor na clula A1 e formate-a com tamanho 14; . Na clula A1 digite o texto Programao em microinformtica; . Encerre a gravao da macro, dando um click no boto Parar Gravao. Pronto: Nossa macroCabealho est gravada. Vamos v-la. Abra os itens de menu Ferramentas / Macro / Macros, selecione a macro Cabealho e d um click no boto Editar Aparecer uma janela parecida com a abaixo:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:10

A figura acima mostra uma parte do ambiente de desenvolvimento do VBA. Explore a macro Cabealho... Obs. Comentrios: Em VB iniciam com apstrofo, ficam na cor verde e servem apenas para a documentao do programa. A macro Cabealho est gravada em nossa planilha do Excel. Vamos execut-la. Para voltar ao Excel ou vice-versa, use a combinao de teclas Alt + F11. Apague o contedo da clula A1 (Editar / Limpar / Tudo) e execute a macro Cabealho que voc criou, para ver seu efeito. Para execut-la, abra os itens do menu Ferramentas / Macro / Macros, escolha a macro cabealho e d um click em Executar. Aps execut-la, volte ao ambiente do VBA, com a combinao de teclas Alt + F11 para estud-la um pouco melhor. Obs. O gravador de macros do Excel gera a parte mais pesada da codificao, gerando inclusive algumas instrues desnecessrias, que deixam a execuo da macro mais lenta. Podemos analisar e modificar as instrues da macro para melhor adequ-la a nossas necessidades. Por exemplo, podemos eliminar as instrues: .Strikethrough = False .Superscript = False

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:11 .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic Podemos tambm substituir a instruo ActiveCell.FormulaR1C1 = "Prog. Micro", Por ActiveCell.FormulaR1C1 = inputbox (Digite o Cabealho desejado...) Faa essas modificaes, execute a macro e veja o efeito. Obs.: Voc pode executar a macro, pressionando a tecla F5. Se voc estiver no ambiente do VBA e pressionar F5, a macro ser executada o foco volta ao ambiente do VBA. -Para ver o efeito da execuo da macro, use Alt + F11 (Mostra a planilha). -Limpe novamente os textos da planilha e execute a macro novamente.

Criando macros sem o uso de gravador: Abra o editor do VBA (Alt + F11), e digite aps o End Sub do procedimento Sub Cabealho: Sub Teste_Cabecalho_Com_Data() Note que aps voc pressionar Enter, o programa inclui automaticamente o End sub. Digite em seguida, os comandos abaixo, deixando a procedure da forma:
Sub Teste_Cabecalho_Com_Data() Range("A1").Select ActiveCell.FormulaR1C1 = InputBox("Digite o Cabecalho : ", "A T E N O") + Str(Date) End Sub

Obs. : A expresso Str ( Date) concatenada string que ser digitada na InputBox. Ela composta por duas funes do VBA: Str converte nmero em texto. Date retorna a data do computador. Pressione F5 para execut-la e veja o efeito. Obs. Quando se pressiona F5, executado o procedimento onde est o foco (cursor do editor). Volte para o ambiente do Excel (Alt + F11) e verifique que o procedimento Teste_Cabecalho_Com_Data aparece junto com a macro anterior (Cabealho). A qualquer momento, o ambiente do VBA dispe de um Help onde se podem obter informaes valiosas. Pra acionar o Help, basta selecionar o objeto ou instruo que se necessita ajuda e pressionar a tecla F1. Tente com Inputbox da macro acima.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:12

Uso de formulrios: Utilizao de formulrios na programao com VBA: Utilizam-se formulrios de maneira similar programao em VB. No formulrio, so includos componentes tais como botes, caixas de texto, labels etc. que respondes a eventos provocados pelo usurio. Para testar isso, feche o Excel atravs do Windows Explorer abra o arquivo Livros, contendo a planilha Estoque, igual abaixo:

Crie uma macro de nome TstForm, sem nenhuma programao (Ferramentas / Macro / Gravar nova macro).

Pressione o boto OK e em seguida pare a gravao. Pronto! Gravamos uma macro de nome TstForm, sem nenhuma programao. Agora, abra o ambiente do VBA, com a combinao Alt + F11: Inclua um formulrio associado sua planilha. v ao ambiente do VBA e d click nos itens Inserir / UserForm. Voc ver a seguinte janela:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:13

Atravs dessa janela voc ir elaborar e programar a interface com a qual o usurio ir manipular dados na planilha. Obs.: Estrutura de comandos e programao em VBA aos objetos so associadas propriedades, que so as caractersticas do objeto. Por exemplo o tamanho, cor etc so propriedades de um objeto. Aos objetos tambm so associados mtodos (funes) exemplo Range(A2:A6).Select deixa selecionadas as celular A2 at A6. Variveis a maneira pela qual manipulamos valores em programao. Exemplo de criao de variveis em VBA : Private Sub UserForm_Click() Dim x As String x = "Bem vindos ao VBA..." FrmVendaLivros.Caption = x End Sub

Selecione o formulrio e digite em sua propriedade Caption, o texto Venda de Livros. Inclua no formulrio os componentes abaixo e configure o formulrio de acordo com o seguinte layout:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:14

Obs.: vamos mudar todos os nomes dos componentes, de acordo com seu tipo e objetivo: Exemplos: Formulrios inicia com Frm exemplo FrmVendaLivros Caixa de Combinao - Inicia com Cxc exemplo CxcLivro Label Inicia com Lbl exemplos LblValorUnit, LblValortotal Caixa de Texto Inicia com Txt exemplo TxtQuantidade Boto de comando inicia com Cmd exemplo CmdCalcula Para isso, selecione cada componente e altere a propriedade Name na janela de propriedades. Para executar o formulrio, vamos criar nossa procedure, digitando diretamente na Macro TstForm: Sub TstForm() FrmVendaLivros.Show Esta instruo exibe e executa o formulrio FrmLivros. End Sub Pressione a tecla F5 para ver o programa funcionando. Note que os componentes esto prontos e funcionando, porm no respondem aos eventos provocados pois estes (os eventos) no esto sendo tratados. Faremos o tratamento a seguir. Feche o formulrio e volte janela da planilha (Alt + F11), selecione a rea igual abaixo e d o nome a essa seleo de TabLivros.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:15

Volte ao ambiente do VBA, selecione o componente CxcLivros e coloque em sua propriedade RowSource, o texto TabLivros, que o nome que voc colocou na regio selecionada da planilha. Execute novamente o programa (tecla F5) e d um click no componente CxcLivro. Note que o componente responde ao evento, trazendo a tabela TabLivros. Vamos continuar nossa programao. Quando ocorrer o click no nome do livro, dever surgir o valor unitrio no label de nome LblValorUnit. Se digitarmos a quantidade de livros e pressionarmos o boto Calcula, o programa dever exibir o valor Total da compra, no label LblValorTotal. A janela de programao abre-se ao ocorrer o click duplo no componente que desejamos programar. Essa janela tem a seguinte aparncia:

A programao ser a seguinte:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:16

Faa o teste e verifique o funcionamento do programa.

Exerccios: 1- Inclua uma caixa de texto para que possa oferecer desconto no preo final da compra. Caso o desconto exceda 20% o programa deve alertar o usurio sobre esse fato. Use a procedure do VBA msgbox. Use o Help para ver seu funcionamento.

2- Inclua um label p/ exibir separadamente o valor do desconto. 3- Formatar os valores em formato de moeda para exibio dos campos de Valor Unitrio e de Valor Total, Use a instruo Format. Exemplo: LblValorUnit.Caption=Format ( val(LblValorUnit.Caption),R$#,###.00) Criao e uso de funes: Podemos criar funes em VBA e utiliz-las na planilha Excel. Por exemplo, suponha que precisamos da informao da situao de nosso estoque, da seguinte maneira: - se o estoque estiver igual ou abaixo de 3 unidades, estar baixo. - se estiver entre 4 e 14 unidades, estar bom (normal). - com 15 unidades ou mais, estar muito alto.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:17 Podemos usar as funes do Excel para isso, ou podemos criar a seguinte funo em VBA, que deve ser digitada no mesmo Mdulo que contm a procedure TstForm:

Function SaldoEstoque(estoque As Integer) As String If estoque <= 3 Then SaldoEstoque = "Estoque Baixo" If estoque > 3 And estoque <= 15 Then SaldoEstoque = "Estoque Normal" If estoque > 15 Then SaldoEstoque = "Estoque Em Excesso" End Function Sub TstForm() FrmVendaLivros.Show Esta instruo exibe e executa o formulrio FrmLivros. End Sub Agora basta chamar a funo SaldoEstoque, na planilha e utiliz-la:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:18

Aula 2 de programao com Excel


Vamos continuar desenvolvendo nossa aplicao com VBA. Abra o arquivo Livros.xls que utilizamos na aula anterior. Ative o ambiente do VBA (Alt + F11) Verifique que o formulrio FrmVendaLivros deve estar mais ou menos com a aparncia:

Lembre-se que se o desconto oferecido for maior que 20%, o programa exibe uma mensagem de aviso, porm faz a operao assim mesmo. Vamos alter-lo para que o usurio possa cancelar a operao. Para isso, usaremos a msgbox na forma de funo, onde ser retornado o valor do boto Yes ou No, que o usurio clicou. O cdigo ficar mais ou menos igual ao abaixo: Private Sub CmdCalcula_Click() Dim ValTotal As Single Dim ValDesconto As Single Dim ValComDesconto As Single If Val(txtDesconto.Text) > 20 Then If MsgBox(" Ateno: Desconto maior que 20%...", vbYesNo) = vbNo Then Exit Sub End If Else ValTotal = Val(TxtQuantidade) * Val(LblValorUnit.Caption) ValDesconto = Val(txtDesconto.Text) / 100 * ValTotal ValComDesconto = ValTotal - ValDesconto LblDesconto.Caption = Format(ValDesconto, "#,###.00") LblValorTotal.Caption = Format(ValComDesconto, "#,###.00") End If End Sub Exerccio: Se o percentual do desconto for maior que 20% e o usurio pressionar o boto No, o programa dever limpar os valores dos labels LblDesconto, LblValorTotal e dever mandar o foco para a caixa de texto txtDesconto, deixando os valores dessa caixa selecionados. Para isso, utilizar o mtodo setfocus e as funes:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:19 txtDesconto.SetFocus Txtdesconto.SelStart=0 Txtdesconto.Sellenght=len(Txtdesconto.text) Essa parte do programa ficar mais ou menos assim: If Val(TxtDesconto.Text) > 20 Then If MsgBox(" Ateno: Desconto maior que 20%...", vbYesNo) = vbNo Then LblDesconto.Caption = "" LblValorTotal.Caption = "" TxtDesconto.SetFocus TxtDesconto.SelStart = 0 TxtDesconto.SelLength = Len(TxtDesconto.Text) Exit Sub End If End If Continuando nosso projeto, inclua um novo formulrio (Inserir UserForm) e configure-o como abaixo:

Os nome dos componentes sero: FrmLivraria, CmdVendas, CmdEstoque, CmdFim. Insira na propriedade Picture do formulrio FrmLivraria, uma das fotos da pasta ...Server2000 / Prg_Micro. Obs.: Podemos adequar o tamanho da figura ao formulrio, atravs da propriedade PictureSizemode. Ao ser dado o clique no boto CmdVendas, exibido na forma modal, o formulrio FrmVendaLivros. Dever ter a forma:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:20 Private Sub CmdVendas_Click() FrmVendaLivros.Show 1 End Sub Ao ser dado o clique no boto CmdEstoque, exibido o formulrio FrmEstoque que desenvolveremos posteriormente. Ao ser dado o clique no boto CmdFim, o programa encerrado. Veja o exemplo abaixo: Private Sub CmdFim_Click() Unload FrmLivraria End Sub Crie no Mdulo1, a procedure Livraria, que ao ser executada, exibe o formulrio FrmLivraria. Veja a figura:

Crie em sua planilha uma barra de ferramentas de nome Teste VBA ( Ferramentas / Personalizar / Guia Barra de Ferramentas boto Nova). Inclua nela um boto para acionar a macro Livraria (Ferramentas / Personalizar / Guia Comandos categoria Macros arraste Personalizar boto barra de ferramentas). Personalize esse boto, de acordo como fizemos no trabalho de Word. Para que uma macro seja executada quando ocorrer um click nesse boto, clique nele com o boto direito e escolha o item Personalizar. Com a janela Personalizar aberta, clique novamente no boto da barra de ferramentas, com o boto direito do mouse. Escolha o item Atribuir Macro, selecione a macro desejada e feche as janelas. Agora s utilizar o boto. Exerccio: Inclua no formulrio FrmVendaLivros, o boto Volta, que ao receber o click do mouse, fechado e o controle volta ao formulrio FrmLivraria. Crie o formulrio FrmEstoque, com a seguinte aparncia:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:21

Esse formulrio ser acionado quando o boto CmdEstoque, do formulrio FrmLivraria, for clicado. Programao associada a esse formulrio: Private Sub CmdCancela_Click() Unload FrmEstoque End Sub Private Sub CmdOk_Click() Dim endereco As String Sheets("Estoque").Select Range("A65536").End(xlUp).Offset(1, 0).Select ActiveCell.Offset(0, 0).Value = TxtCodigo.Text ActiveCell.Offset(0, 1).Value = TxtNome.Text ActiveCell.Offset(0, 2).Value = TxtAutor.Text ActiveCell.Offset(0, 3).Value = TxtEditora.Text ActiveCell.Offset(0, 4).Value = TxtPreco.Text ActiveCell.Offset(0, 5).Value = TxtQuant.Text ActiveCell.Offset(0, 5).Select endereco = ActiveCell.Address ActiveCell.Offset(0, 1).Value = "=SaldoEstoque(" + endereco + ")" FrmEstoque.Hide End Sub Este apenas um prottipo de programa em VBA para o Excel, visando vislumbrar uma pequena parcela do potencial dos recursos que o software pode oferecer. Salve a planilha Livros e prepare-se para apresentar o projeto ao professor.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:22

Terceira Parte - Access


Aula 1 de Access. Execute o Access e abra o arquivo Revenda.mdb. Esse arquivo possui tabelas contendo registros de veculos e de vendedores em uma revenda de veculos usados.

Selecione a categoria Formulrios, d um click duplo no item Criar formulrio no modo design e crie o formulrio a seguir: Na figura abaixo exibida a janela Propriedades, o Formulrio e a caixa de ferramentas. Para exibir a caixa de ferramentas ou a janela Propriedades, abra o item Exibir na barra de menu e d um click no item que quer exibir. Na guia Formato da janela de propriedades, selecione o item Legenda e digite o texto para a barra de ttulo do formulrio: Formulrio de Veculos: Veja a figura abaixo:

Coloque duas caixas de texto no formulrio e formate-as como abaixo:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:23

Execute o formulrio, pressionando a tecla F5. Para voltar ao modo de design, click com o boto direito do mouse e selecione Design do formulrio. Vamos colocar nomes coerentes nos componentes do formulrio. Os nomes devero representar o tipo do componente e o que iro conter. Para representar o tipo de componente, usaremos a seguinte padronizao: - Nomes de caixa de texto devem iniciaro pelas letras txt exemplo: txtModelo, txtCor etc. - Label iniciar pelas letras lbl exemplo: lblModelo, lblCor etc. - Boto de comando iniciar pelas letras cmd exemplo: cmdOk, cmdCancela etc. - Boto de opo dever iniciar pelas letras opt exemplo: optopcao1, optopcao2 etc. Outros tipos de nomes de componentes sero vistos oportunamente. A padronizao de nomes para componentes muito importante para documentao e visa facilitar o desenvolvimento e manuteno de programas. Vamos atribuir nomes s caixas de texto de nosso formulrio. Clique com o boto direito do mouse a caixa de texto que conter o Modelo do veculo, selecione a guia Outra e altere o Nome para txtModelo. Faa o mesmo para a caixa que conter a cor do veculo.

Vamos incluir em nosso formulrio, a tabela de onde viro os dados que iro aparecer nas caixas de texto. Para isso, d um click com o boto direito do mouse na janela do formulrio (mas no no formulrio), selecione o item Propriedades, pegue a guia Dados.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:24 Selecione o item Fonte de registros e d um click no cone .... Selecione a tabela veculos, d um click em Adicionar, em seguida d um click no item Fechar. Na escolha do campo, selecione o item veiculos.*. Isso ir incluir em seu formulrio, a tabela inteira. Feche a janela Instruo SQL construtor de consulta e salve-a. Vamos agora incluir os campos do banco de dados nos componentes do formulrio: -Selecione a caixa de texto txtModelo, clicando nela com o boto direito do mouse. -Escolha o item propriedes. -Na guia Dados, abra o cone da Fonte de controlee selecione o campo modelo, -Faa o mesmo para o campo cor. Ponha o foco no formulrio e pressione a tecla F5 para ver o formulrio em execuo.

Obs. Se usarmos o assistente para criao de formulrio, esses passos sero feitos automaticamente. Optamos por fazer manualmente visando a aquisio de habilidades que usaremos posteriormente. Exerccios: 1 - Inclua os campos ano e valor no formulrio, com nomes txtAno e txtValor. O campo ano deve ser no formato nmero geral com zero decimais e o campo valor deve ser no formato moeda com 2 decimais. 2 - Fazer programao para que, o que for digitado no campo modelo, fique em maisculo. Procedimento: D um click duplo na caixa de texto txtModelo e escolha a guia Evento. Escolha o item Ao pressionar tecla e d um click nos ... da direita da linha. Na janela Escolher construtor, selecione Construtor de cdigoe d um click no boto Ok.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:25

Ser oferecido para programao, o tratador do evento Keypress, que dever ser programado da seguinte forma: Private Sub txtModelo_KeyPress( KeyAscii As Integer ) KeyAscii = Asc ( UCase ( Chr ( KeyAscii ) ) ) ' Deixa os caracteres em maisculo. End Sub 3 - Fazer programao para que o ano digitado seja validado. Ou seja, o ano s vlido se estiver entre 1900 e o ano atual + 1. Para isso, selecione a caixa de texto txtAno e programe o evento Antes de atualizar, como abaixo: Private Sub txtAno_BeforeUpdate(Cancel As Integer) If Val(txtAno) < 1900 Or Val(txtAno) > Year(Date) + 1 Then MsgBox " Ano invlido... Digite o ano correto!", vbCritical, "A T E N O" Cancel = True 'Cancela a atualizao End If End Sub 4 O campo valor deve aceitar apenas valores numricos e a vrgula decimal. A programao a seguinte: Private Sub txtValor_KeyPress(KeyAscii As Integer) Dim TECLA As String TECLA = Chr$(KeyAscii) If (TECLA < "0" Or TECLA > "9") And TECLA <> "," Then Beep KeyAscii = 0 End If End Sub 5 O campo valor deve aceitar apenas nmeros e apenas uma nica vrgula decimal.
Obs.: a funo InStr( txtValor.Text,,) retorna 0 se no achou a , ou retorna a posio onde encontrou a ,. Verifique o Help on line.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:26 6 O campo ano deve aceitar apenas nmeros e no mximo 4 caracteres. Se for digitado mais de 4 caracteres, exibir mensagem de alerta. Utlize a funo LEN que retorna o comprimento de um string use o help para verificar. 7 No campo cor todos os caracteres digitados dever estar em maisculo. 8 Os campos ano e valor devem aceitar a tecla BackSpace. O cdigo ASCII dessa tecla 8. Portanto, se keyascii for igual a 8, a tecla ser vlida. 9 Se uma tecla invlida for digitada, o programa dever exibir mensagem de alerta. 10 Inclua no formulrio, os campos Estado e Placa. Todos os caracteres devem ficar em maisculo. 11 Insira no banco de dados, atravs do formulrio, os registros abaixo: MODELO 1 2 3 4 CORSA CORSA CORSA CORSA COR ESTADO RJ SP BA SP PLACA ANO VALOR 8000,00 12000,00 15000,00 7500,00

BEGE VERDE BRANCO PRETO

CAU3254 BBJ2429 EBF9553 GTH8865

1998 2000 2002 1998

12 Verificar o tamanho dos campos do banco de dados e limitar a digitao de todos os campos (exceto o campo valor), de acordo com as especificaes dos campos correspondentes. Salvar o arquivo Revenda e preparar para apresentar o formulrio ao professor. Aula 2 de Access. Abrir o arquivo Revenda utilizado na aula anterior. O formulrio deve estar com a seguinte aparncia:

Vamos personalizar um pouco nosso formulrio e depois iremos remover o componente padro de navegao de registros. Para isso, vamos selecionar o cone do componente

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:27 boto de comando na Caixa de ferramentas e vamos inclu-lo no formulrio. Note que o VBA abre uma janela para escolhermos qual a categoria de boto ns queremos. Vamos selecionar a categoria Navegao de registro. Vamos inserir em nosso formulrio, todos os botes dessa categoria, exceto o boto localizar prximo.

Para cada boto que voc inserir, click no boto Avanar e configure as propriedades do boto a seu gosto. muito importante atribuir um nome de acordo com nossa padronizao, como por exemplo, para o boto Ir para primeiro registro, o nome cmdPrimeiroRegistro, cmdProximo etc.. Faa isso para todos os botes. Exerccio: Coloque mais dois botes da categoria Operaes de registro: Adicionar novo registro e Excluir registro. Mude seus nomes para cmdAdicionaNovo e cmdExcluir, por exemplo. Nosso formulrio ficar mais ou menos assim:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:28

Agora que j temos nossos prprios botes de controle dos registros, no precisamos mais do controle fornecido automaticamente com o relatrio. Para elimin-lo, no modo de design do formulrio, coloque No no item Formulrio / Formato / Botes de navegao. Execute o formulrio para verificar e teste todos os botes que voc colocou. Note que o editor de VBA do Access providenciou toda a programao p/ voc. Abra a janela de cdigo e verifique:

Note a palavra DoCmd na figura acima. Dizemos que DoCmd um objeto do modelo de objetos do Access. O objeto DoCmd suporta vrios mtodos que provocam vrias aes na programao em VBA para o Acess. Veja a seguir, a programao automtica gerada pelo VBA ao evento click no boto cmdProximo, onde o objeto DoCmd executa o mtodo GoToRecord, com o argumento acNext: Private Sub cmdProximo_Click() On Error GoTo Err_cmdProximo_Click

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:29 DoCmd.GoToRecord , , acNext Exit_cmdProximo_Click: Exit Sub Err_cmdProximo_Click: MsgBox Err.Description Resume Exit_cmdProximo_Click End Sub Exerccios: Se um veculo do banco de dados for vendido, o vendedor dever informar a venda, a fim de receber sua comisso. Para que o vendedor possa fazer isso, inclua no formulrio, o boto Vender, que ao ser pressionado solicita o cdigo do vendedor. Esse cdigo dever ser inserido no campo codvendedor do banco de dados Veculos. A digitao do cdigo poder ser feita por uma InputBox. Incluso de um boto comum no formulrio (sem programao automtica): Para incluir um boto comum no formulrio proceda da seguinte maneira: Inclua um boto no formulrio e na janela apresentada, onde aparecem as categorias de boto oferecidas, pressione a tecla Cancelar. Na janela de propriedades, selecione a guia Outra e mude o nome para cmdVender. Na guia Formato, mude a legenda para &Vender. Com a legenda dessa maneira, voc poder executar o programa associado ao boto, pressionando Alt + V. O cdigo do vendedor a ser digitado dever possuir dgito de controle que ser verificado atravs de clculo pelo mdulo 11. O dgito verificador (dv), ou dgito de controle (dc) calculado pelo mdulo 11 bastante seguro, e usado para validao de CPF, RG, CGC e vrios outros cdigos oficiais. Um dgito de controle calculado pelo mdulo 11 da seguinte maneira : Por exemplo, supondo-se o cdigo de vendedor 200506003, fazem-se os clculos. 3x2=6 0x3=0 0x4=0 6 x 5 = 30 0x6=0 5 x 7 = 35 0x8=0 0x9=0 2 x 10= 20 + -------91

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:30 Pega-se o resultado da soma ( 91), divide-se por 11 e pega-se o resto, que neste caso 3. 91 / 11 = 88 Resto = 3

Da, faz-se 11 3 = 8. Pronto. O dgito calculado 8, e o cdigo do vendedor, com dgito, ficar: 200506003-8 Se o resto da diviso por 11 for 0 ou 1, o dgito o prprio resto. Na programao usamos a funo Mod do VBA, que retorna o resto da diviso de um nmero inteiro por outro. Exemplo DigitoLido=CodigoLido mod 10 Nas divises, para truncar o nmero em seu ltima casa, usamos a funo Int para que o VBA no cause arredondamento no resultado da diviso. Por exemplo, codigo = Int(codigo / 10) Acompanhe o programa a seguir:
Private Sub cmdVender_Click() Dim codigolido As Long Dim digitolido As Integer Dim codigo As Long Dim digito As Integer Dim soma As Integer Dim mult As Integer mult = 2 soma = 0 codigolido = Val(InputBox(" Digite o cdigo do vendedor: ", " V e n d a d e V e c u l o")) digitolido = codigolido Mod 10 codigo = Int(codigolido / 10) While codigo > 0 soma = soma + (codigo Mod 10) * mult mult = mult + 1 codigo = Int(codigo / 10) Wend digito = soma Mod 11 If digito > 1 Then digito = 11 - digito End Sub

O programa acima recebe um cdigo numrico de vendedor com dgito, separa esse dgito e calcula, com o restante do nmero lido, um outro dgito com a finalidade de verificar se o dgito calculado confere com o digito lido. Exerccios:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:31 1 Verificar se o usurio digitou apenas nmeros. Caso tenha sido digitado algum caractere no numrico, exibir mensagem de erro e abandonar o procedimento. Utilize a funo IsNumeric. A programao ficar assim:
Dim codigostr As String codigostr = InputBox(" Digite o cdigo do vendedor: ", " V e n d a d e V e c u l o") ' verifica se foram digitados s numeros. If Not IsNumeric(codigostr) Then MsgBox "Nmero invlido! Digite apenas nmeros...", vbCritical, "ATENO" Exit Sub End If

2 - Verificar se o dgito calculado igual ao dgito lido. Se for igual, aceitar o cdigo do vendedor e inclu-lo na tabela Veiculos, no campo codvendedor, e exibir mensagem Venda efetuada com sucesso! 3 - Se o dgito no bater, exibir mensagem de erro ao usurio e abandonar o procedimento. O cdigo ser mais ou menos como abaixo:
If digitolido = digito Then codvendedor = codigolido ' codvendedor campo do Banco de Dados. ' A instruo abaixo salva o registro corrente - grava o codigo do vendedor. DoCmd.RunCommand acCmdRefresh MsgBox "Venda efetuada com sucesso!" Else MsgBox "Digito no bate. Tente novamente....", vbExclamation, "A T E N O" Exit Sub End If

4 Se a venda for concretizada e aps ser inserido com sucesso o cdigo do vendedor, o boto cmdVender dever ficar desabilitado, com caption Vendido. Usar a instruo cmdVender.enabled = false. 5 Ao navegar pelo banco de dados, se o veculo estiver venda, ou seja, se o campo de cdigo de vendedor ainda estiver em branco, o boto cmdVender dever ficar habilitado, e com caption = &Vender. Caso contrrio, ou seja se o veculo j foi vendido, consequentemente o campo codvendedor estar preenchido. Nesse caso, o boto cmdVender dever estar desabilitado, com caption Vendido. A programao ser mais ou menos como a abaixo: If IsNull(codvendedor) Then cmdVender.Caption = "&Vender" cmdVender.Enabled = True Else cmdVender.Caption = "Vendido" cmdVender.Enabled = False End If A programao acima dever ser codificada em todos os botes de navegao.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:32 6 Com objetivo de deixar o cdigo do evento Click do boto cmdVender mais enxuto e mais elegante, criar a funo CalculaDC que recebe o cdigo do vendedor, sem dgito de controle, calcula e retorna o dgito calculado com base no cdigo recebido. Utilize essa funo no evento click do boto cmdVender, ao invs daquele cdigo enorme.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:33 A programao final do evento Click do boto cmdVender, dever ficar mais ou menos assim (sem uso da funo CalculaDC):
Private Sub cmdVender_Click() Dim codigostr As String Dim codigolido As Long Dim digitolido As Integer Dim codigo As Long Dim digito As Integer Dim soma As Integer Dim mult As Integer mult = 2 soma = 0 codigostr = InputBox(" Digite o cdigo do vendedor: ", " V e n d a d e V e c u l o")

' verifica se foram digitados s numeros. If Not IsNumeric(codigostr) Then MsgBox "Nmero invlido! Digite apenas nmeros...", vbCritical, "ATENO" Exit Sub End If codigolido = Val(codigostr) digitolido = codigolido Mod 10 codigo = Int(codigolido / 10) While codigo > 0 soma = soma + (codigo Mod 10) * mult mult = mult + 1 codigo = Int(codigo / 10) Wend digito = soma Mod 11 If digito > 1 Then digito = 11 - digito If digitolido = digito Then codvendedor = codigolido ' codvendedor campo do BD ' A instruo abaixo salva o registro corrente - grava o codigo do vendedor. DoCmd.RunCommand acCmdRefresh MsgBox "Venda efetuada com sucesso!" Else MsgBox "Digito no bate. Tente novamente....", vbExclamation, "A T E N O" Exit Sub End If End Sub

Obs: Se desenvolvermos e usarmos a funo VerificaDC, o programa poder ficar assim:


Function CalculaDC(novocodigo As Long) As Integer Dim codigo As Long Dim digito As Integer Dim soma As Integer Dim mult As Integer

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:34


codigo = novocodigo mult = 2 soma = 0 While codigo > 0 soma = soma + (codigo Mod 10) * mult mult = mult + 1 codigo = Int(codigo / 10) Wend digito = soma Mod 11 If digito > 1 Then digito = 11 - digito CalculaDC = digito 'Retorna o valor do digito calculado End Function Private Sub cmdVender_Click() Dim codigostr As String Dim codigolido As Long Dim codigo As Long Dim digitolido As Integer On Error GoTo ExibeErro: codigostr = InputBox(" Digite o cdigo do vendedor: ", " ' verifica se foram digitados s numeros. If Len(codigostr) > 10 Then MsgBox "Cdigo com mais de 10 dgitos - redigite!" Exit Sub End If If Not IsNumeric(codigostr) Then MsgBox "Nmero invlido! Digite apenas nmeros...", vbCritical, "ATENO" Exit Sub End If codigolido = Val(codigostr) 'converte o codigo p/ numero digitolido = codigolido Mod 10 'separa o digito lido codigolido = Int(codigolido / 10) 'tira o digito do codigo - trunca If digitolido = CalculaDC(codigolido) Then 'Chamada da funo VerificaDC 'o digito bateu... codvendedor = Val(codigostr) ' codvendedor campo do BD 'A instruo abaixo salva o registro corrente - grava o codigo do vendedor. DoCmd.RunCommand acCmdRefresh 'Grava registro corrente MsgBox "Venda efetuada com sucesso!" cmdVender.Caption = "Vendido" cmdProximo.SetFocus cmdVender.Enabled = False Else ' No else, o digito no bateu... MsgBox "Dgito no bate - redigite!", vbCritical, "A T E N O" V e n d a d e V e c u l o")

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:35


Exit Sub End If Exit Sub ExibeErro: MsgBox Error(Err) End Sub

Aula 3 de Access.
Abra o arquivo Revenda, selecione a categoria Formulrios e teste o formulrio Formulrio de

Veculos. Esse formulrio deve estar com a seguinte aparncia:

Exerccios:
1 - Incluir no projeto um formulrio de nome frmVendedor, contendo todos os campos da tabela vendedor. Mude os nomes das caixas de texto desse formulrio, para nomes compatveis com caixas de texto, de acordo com o padro adotado por ns: txtCodVendedor, txtNome, txtEndereco, txtEstadoCivil, txtSalarioFixo. 2 - Incluir botes para navegao no banco de dados e um boto do grupo Operaes de registro com ao Adicionar registro, para podermos incluir novos vendedores em nosso banco de dados. 3 Eliminar o componente padro de navegao do relatrio. Esse formulrio dever ficar com a seguinte aparncia:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:36

4 - Para que o usurio no possa alterar os registros j existentes no banco de dados, programar o evento Form_load() para desabilitar as caixas de texto do formulrio: Private Sub Form_Load() txtcodvendedor.Enabled = False txtNome.Enabled = False txtEndereco.Enabled = False txtEstadoCivil.Enabled = False txtSalarioFixo.Enabled = False End Sub 5 Programar o evento click do boto cmdAdicionaVendedor para que: . Desabilite todos os botes, inclusive ele prprio (exceto o boto Ok). . Solicite o cdigo do novo vendedor (via InputBox) . Verifique se o cdigo digitado composto s de nmeros (funo InsNumeric) . Solicite que o cdigo seja digitado novamente, para verificar se igual ao anterior. . Utilize a funo CalculaDC para calcular o dgito de controle do cdigo do novo vendedor. . Inclua esse dgito no cdigo do novo vendedor, coloque-o no campo codvendedor do banco de dados de um registro novo. . Libere as demais caixas de texto para digitao (propriedade enabled = true) e exiba mensagem para o usurio digitar os dados do novo vendedor e em seguida pressionar o boto Ok. . Ponha o foco na caixa de texto txtNome, para o usurio comear a digitao. . Aps o boto Ok ser pressionado (evento click), os contedos das caixas de texto: cdigo, nome, endereo etc, devero ser gravados no banco de dados (DoCmd.RunCommand acCmdRefresh). . Osbotes devero ser novamente habilitados e as caixas de texto devero ser novamente desabilitadas. Obs.: Para que uma funo ou procedimento possam ser utilizados por todos os formulrios do banco de dados, necessitam estar dentro de um Mdulo. Portanto, inclua um mdulo em seu projeto e copie a funo CalculaDC para dentro dele.

6- Inclua na tabela Vendedor os registros abaixo, atravs do formulrio frmVendedor que voc acabou de criar. Note que o cdigo de vendedor da tabela abaixo j est com dgito de controle. Voc deve fornec-lo sem o dgito. O sistema ir calcular o dgito de controle pelo mdulo 11 e o incluir no cdigo do vendedor:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:37

Aps verificar se tudo funciona, faa os acertos finais nas tabelas Veiculos e Vendedor, do banco de dados Revenda: Verifique que na tabela Veiculos no deve haver registros de veculos usados para teste, ou seja, com nomes do tipo ABC. Se um veculo foi vendido o contedo do campo codvendedor deve ser um cdigo vlido, constante na tabela de vendedores. Efetue a venda de alguns veculos, verifique se as tabelas Veiculos e Vendedor esto com os dados corretos para executarmos o exerccio final. Exerccio: 1 - Nosso prximo passo ser criar um RELATRIO que listar os vendedores e seus salrios, que sero compostos pelo salrio fixo (da tabela Vendedor), somados com a comisso de 10% do valor de cada veculo (da tabela Veculos) vendido pelo vendedor. 2- Na janela de Objetos do Access crie um relacionamento entre os campos codvendedor entre a tabelas Veiculos e Vendedor. No imponha integridade referencial.

No Tipo de associao escolha o item Incluir TODOS os registros de `vendedor` e somente.... Click nos botes Ok para fechar essas janelas. Agora estamos prontos para criar nosso relatrio. Volte janela de objetos e selecione a categoria Relatrios. Vamos criar nosso relatrio usando o assistente e posteriormente iremos personaliz-lo. 3 Crie o relatrio de nome Relat_Salrio, usando o assistente. Selecione a tabela vendedor e inclua os campos codvendedor, nome e salrio fixo. Selecione agora a tabela veiculos e inclua os campos modelo e valor.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:38

D um Click no boto Avanar e na prxima tela escolha o agrupamento por codvendedor. Click novamente em Avanar. Na prxima tela escolha o campo valor como ordem de classificao e em Opes de resumo escolha Soma dos campos valor. Click novamente no boto Avanar, e na prxima janela escolha layout Bloco. Na prxima janela escolha o estilo que gostar mais. Na ltima janela escolha um ttulo sugestivo para o relatrio, como por exemplo Relat_Salario. D um click no item Visualizar relatrio para ver o relatrio criado: Para entrar no modo de edio do relatrio, click nele com o boto direito do mouse. 4 Entre no modo de edio do relatrio e inclua uma caixa de texto, onde exibiremos o valor do salrio do vendedor. Para isso, incluiremos a caixa de texto txtSalario na seo Rodap codvendedor. Para isso, selecione a caixa de texto, exiba a janela de propriedades, mude o nome da caixa de texto para txtSalario, e o formato para Unidade monetria.
Pegue a guia Dados e configure o contedo dessa caixa de texto de acordo com o seguinte:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:39


Visualize o relatrio, que dever exibir o salrio fixo de cada vendedor, acrescido com a comisso pela venda dos veculos, por ele vendidos. Se quiser format-lo de maneira melhor, faa-o a seu gosto. 5 Volte ao formulrio frmVeiculos e coloque um boto, que ao receber o click do mouse, exiba o relatrio criado no item anterior. Utilize o Assistente de boto de comando, com o grupo de Operaes de relatrio e a ao Visualizar relatrio:

Escolha o relatrio Relat_Salarios, e coloque o nome no boto de cmdRelatorio. Conclua a configurao e teste o boto. Exerccio final: Inclua mais um formulrio de nome frmPrincipal, que ser o formulrio pelo qual a aplicao ir iniciar, quando processarmos o arquivo. Esse formulrio dever ter 3 botes, sendo: - o primeiro boto exibe na forma modal, o formulrio frmVeiculos (nome=cmdExibeFrmVeiculos). - o segundo boto exibe modal, o formulrio frmVendedor (nome=cmdExibeFrmVendedor) . - o terceiro boto encerra o processamento (nome=cmdFim). Obs.: Para exibir um formulrio na forma modal, voc deve configurar suas propriedades como: guia Outra / Janela restrita / Sim Inclua nesse formulrio (propriedades: Formulrio / formato / Imagem) a figura Carros.bmp, que dever ficar mais ou menos assim:

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:40

Para finalizar, vamos configurar as condies de inicializao de nosso arquivo. Para isso, acionar o item de menu Ferramentas / Inicializar. Configurar a janela apresentada de acordo com a figura a seguir. Atribuir um nome ao aplicativo, incluir um cone no aplicativo, desligar todas as caixas de seleo, selecionar o formulrio a iniciar a execuo (frmPrincipal), dar um click no boto Ok e salvar o arquivo Revenda.

Feche todas as janelas, salve o arquivo e feche o Access. Abra o arquivo Revenda e note que s possvel o acesso aos formulrios e ao relatrio que voc criou. O usurio no tem acesso direto s tabelas e aos outros componentes do projeto. Se voc quiser acessar as tabelas ou outros recursos do Access, ao abrir o arquivo, pressione a tecla Shift. Salve tudo e prepare-se para a apresentao do projeto.

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:41


COMPLEMENTO Alguns programas do projeto: Programa associado ao evento click do boto cmdVender, do frmVeiculos (c/ funo) Private Sub cmdVender_Click() Dim codigostr As String Dim codigolido As Long Dim codigo As Long Dim digitolido As Integer On Error GoTo ExibeErro: codigostr = InputBox(" Digite o cdigo do vendedor: ", " ' verifica se foram digitados s numeros. If Len(codigostr) > 10 Then MsgBox "Cdigo com mais de 10 dgitos - redigite!" Exit Sub End If If Not IsNumeric(codigostr) Then MsgBox "Nmero invlido! Digite apenas nmeros...", vbCritical, "ATENO" Exit Sub End If codigolido = Val(codigostr) 'converte o codigo p/ numero digitolido = codigolido Mod 10 'separa o digito lido codigolido = Int(codigolido / 10) 'tira o digito do codigo - trunca If digitolido = CalculaDC(codigolido) Then 'Chamada da funo VerificaDC 'o digito bateu... codvendedor = Val(codigostr) ' codvendedor campo do BD 'A instruo abaixo salva o registro corrente - grava o codigo do vendedor. DoCmd.RunCommand acCmdRefresh 'Grava registro corrente MsgBox "Venda efetuada com sucesso!" cmdVender.Caption = "Vendido" cmdProximo.SetFocus cmdVender.Enabled = False Else ' No else, o digito no bateu... MsgBox "Dgito no bate - redigite!", vbCritical, "A T E N O" Exit Sub End If Exit Sub ExibeErro: MsgBox Error(Err) End Sub V e n d a d e V e c u l o")

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:42


Programas Principais do formulrio frmVendedor: Private Sub cmdOk_Click() DoCmd.RunCommand acCmdRefresh 'atualiza o banco de dados txtcodvendedor.Enabled = False txtNome.Enabled = False 'desabilita as caixas de texto txtEndereco.Enabled = False txtEstadoCivil.Enabled = False txtSalarioFixo.Enabled = False cmdInsereVendedor.Enabled = True 'habilita os botes cmdProximo.Enabled = True cmdAnterior.Enabled = True End Sub

Private Sub Form_Load() txtcodvendedor.Enabled = False txtNome.Enabled = False txtEndereco.Enabled = False txtEstadoCivil.Enabled = False txtSalarioFixo.Enabled = False End Sub

Private Sub cmdInsereVendedor_Click() 'On Error GoTo Err_cmdInsereVendedor_Click Dim novocodstr1 As String Dim novocodstr2 As String Dim novocodigo As Long Dim digitocalc As Integer novocodstr1 = InputBox("Digite o cdigo do vendedor:") If Len(novocodstr1) > 9 Then 'Verifica se o codigo tem at 9 dgitos MsgBox "O cdigo deve ter no mximo 9 nmeros", vbCritical, "A T E N O" Exit Sub End If If Not IsNumeric(novocodstr1) Then 'Verifica se s tem nmeros MsgBox "Nmero invlido! Digite apenas nmeros...", vbCritical, "ATENO" Exit Sub End If novocodstr2 = InputBox("R E D I G I T E o cdigo do vendedor para verificao...") If novocodstr1 <> novocodstr2 Then MsgBox "Codigo invlido... tente novamente!", vbCritical, "A T E N O" Exit Sub End If novocodigo = Val(novocodstr1)

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:43


digitocalc = CalculaDC(novocodigo) 'calculo do dgito de controle p/ o novo cdigo novocodigo = novocodigo * 10 + digitocalc 'incorpora o dc ao cdigo DoCmd.GoToRecord , , acNewRec 'insere um registro novo codvendedor = novocodigo MsgBox "Digite os campos para cadastramento do vendedor e pressione o boto Ok!" txtNome.Enabled = True txtEndereco.Enabled = True txtEstadoCivil.Enabled = True txtSalarioFixo.Enabled = True txtNome.SetFocus cmdInsereVendedor.Enabled = False cmdProximo.Enabled = False cmdAnterior.Enabled = False Exit Sub Exit_cmdInsereVendedor_Click: Exit Sub Err_cmdInsereVendedor_Click: MsgBox Err.Description Resume Exit_cmdInsereVendedor_Click End Sub

Funo CalculaDC Function CalculaDC(novocodigo As Long) As Integer Dim codigo As Long Dim digito As Integer Dim soma As Integer Dim mult As Integer codigo = novocodigo mult = 2 soma = 0 While codigo > 0 soma = soma + (codigo Mod 10) * mult mult = mult + 1 codigo = Int(codigo / 10) Wend digito = soma Mod 11 If digito > 1 Then digito = 11 - digito CalculaDC = digito 'Retorna o valor do digito calculado

Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:44


End Function

Вам также может понравиться