Programação Em VBA - Office 2007 v3.1

Embed Size (px)

Citation preview

  • Disciplina: Programao em microinformtica

    VBA com Word / Excel / Access

    Office 2007

    (Verso 3.1)

    Prof. Hamilton Martins Viana

    Esta apostila pode ser encontrada no site:

    http://sites.google.com/site/hamiltonmv

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

    Pgina Assunto 03 Primeira parte - Word Aula 1. Criao de uma macro

    07 O ambiente VBA

    08 Exerccio sobre macros

    13 Aula 2 de programao com Word - Uso de formulrios

    17 Segunda parte - Excel Aula 1

    19 Criao de macros no Excel sem uso do gravador de macros

    20 Uso de formulrios em Excel

    24 Uso de tratadores de evento em VBA com Excel

    26 Aula 2 de programao com Excel

    26 Criao e uso de funes - a funo SaldoEstoque

    31 Aula 3 de programao com Excel

    32 Exerccios VBA com Excel

    33 Terceira parte - Access Aula 1

    34 Uso de formulrios com Access

    38 Exerccios para aula 1 com Access

    41 Aula 2 de Access

    41 Incluso de botes no formulrio do Access:

    44 Uso de DoCmd

    45 Exerccios Access Aula 2

    49 Aula 3 de Access

    54 Aula 4 de Access

    54 Uso de relatrios com Access

    61 Aula 5 de Access

    65 Automatizao de tarefas

    71 Projeto final da disciplina.

    75 Complemento - Alguns programas do projeto Access e dos exerccios de script.

    80 Bibliografia

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

    Disciplina Programao em Microinformtica (Prg Micro) Segundo a Microsoft, foram vendidas mais de 120 milhes de licenas do Office-2007. 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 Applications). Primeira Parte Word Aula 1 No Word, a programao feita atravs de Macros, da seguinte maneira:

    Criao de uma macro Para criar uma nova macro dever estar disponvel a guia Desenvolvedor, que fica visvel clicando-se no boto Office e em seguida no boto Opes do Word. Veja as janelas abaixo:

    Em seguida d um click em Mais Usados e ative a caixa Mostrar guia Desenvolvedor na Faixa de Opes. Veja a janela a seguir:

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

    Click em Ok p/ fechar as janelas e note que agora est disponvel a guia Desenvolvedor, que utilizaremos em nossos trabalhos. Uma macro contm um conjunto de instrues que sero processadas passo a passo, quando a macro for executada. Para criar uma nova macro, d um click na guia Desenvolvedor e um click no item Gravar 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:

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

    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 Bo!!!, formate-o com tamanho 16, tachado e cor vermelha. Pare a gravao da macro. Obs: Como est sendo utilizado o gravador de macros, a seleo com o mouse no

    possvel. Para selecionar o texto, use a tecla Shift + as setas de direo. 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 testar a macro MinhaMacro: - Apague o texto impresso pela macro em seu documento. - D um click para acionar o item Macros, na guia Desenvolvedor e na janela que surgir,

    selecione a macro que quer executar.

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

    - 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.

    Incluso de uma macro na Barra de Ferramentas de Acesso Rpido. Vamos automatizar um pouco mais esse processo. Podemos atribuir nossa nova macro Barra de Ferramentas de Acesso Rpido para podermos execut-la com mais comodidade. Para isso, d um click no boto Office e em Opes do Word. Na janela que abrir, na caixa da esquerda, click em Personalizar No item Escolher comandos em: selecione Macros e em seguida escolha a macro desejada (neste caso MinhaMacro). Click em Adicionar. Na caixa da direita, selecione a macro desejada e click em Modificar

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

    Escolha o cone mais adequado e mude o Nome para exibio. Pronto! D um click em Ok e veja o boto p/ acionar a macro na Barra de Ferramentas de Acesso Rpido. Quando terminar, voc pode utilizar a macro, com apenas um click do mouse. Abaixo h um exemplo da janela Opes do Word com os itens a serem configurados:

    Obs: D um click com o boto direito do mouse na Barra de Acesso Rpido e veja

    as opes. Programao usando o VBA (Visual Basic for Applications): Vamos agora verificar a parte mais poderosa do uso de macros atravs do VBA. Para isso, selecione a guia Desenvolvedor e d um click no item 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.

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

    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, na forma de instrues, todas as aes que executamos quando criamos a macro. Podemos modificar diretamente as instrues ou incluir novas instrues mudando o comportamento da macro. Exerccio sobre macros 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 p/ aula Prog. Micro. ' Selection.TypeText Text:="Ricardo o Bo!!!" Selection.MoveLeft Unit:=wdCharacter, Count:=20, Extend:=wdExtend Selection.Font.Size = 16 Selection.Font.UnderlineColor = wdColorAutomatic Selection.Font.Underline = wdUnderlineSingle

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

    Selection.Font.Color = wdColorRed 'Incluses manuais, sem uso do gravador de macros. 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. 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.

    Obs.: Para alternar entre a janela do VB e a janela do Word, pressione Alt + F11. Exerccio: Altere manualmente a macro para que, aps exibir o texto anterior,

    escreva seu nome em tamanho 20, em negrito, itlico e sublinhado. Aps isso, o texto deve voltar ao normal e com tamanho do fonte 12.

    Sugesto: Crie uma nova macro p/ ver como se faz negrito, itlico e sublinhado, copie o cdigo na macro MinhaMacro e em seguida, apague a macro de exemplo. Veja abaixo:

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

    Obs.: Note que as macros so para o VB, apenas PROCEDIMENTOS, dentro da pasta Mdulos Aps a cpia e adequao das instrues de MinhaMacro, esta dever estar mais ou menos assim:

    Exerccio : Suponhamos que desejamos acionar a calculadora do Windows. Crie uma nova macro chamada Calculadora, coloque um boto na Barra de Ferramentas de Acesso Rpido, com o cone de uma calculadora, sendo que quando esse boto for acionado, executado o programa calc.exe. Passos: - Guia Desenvolvedor / Gravar Macro - Nome da macro = Calculadora - Armazenar nova macro em = Todos os Documentos - Descrio : Chama a calculadora do Windows - Boto / OK configurar o boto. - Parar gravao

    Em seguida, vamos editar manualmente a macro Calculadora:

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

    Itens: - Guia Desenvolvedor / Macros / Editar

    Digitar na Sub Calculadora(): Shell ("C:\Windows\System32\calc.exe ")

    Obs.: a) A instruo Shell( caminho / programa ) executa programas externos b) A instruo acima executa o programa calc.exe que est na pasta

    c:\windows. Nossa Procedure ficar assim:

    Obs.: Caso a Calculadora no esteja na pasta indicada acima, localize-a e corrija o

    programa. - Voltar ao ambiente do Word (alt + F11). - Testar a macro. Observaes importantes: a)Todos os exerccios sero apresentados ao professor, para avaliao. b)Ao salvar o documento, escolha salvar com o tipo Documento Habilitado para

    Macro do Word(*.docm). Se isso no for feito, todas as macros que voc fez sero perdidas.

    Exerccios: 1-Fazer uma macro de nome TesteInputOutput que utilize:

    - variveis - a maneira que manipulamos valores em programao. - inputbox uma funo do VBA que nos permite a entrada de dados em um

    programa. - msgbox uma funo do VBA que nos permite exibir mensagens para o

    usurio.

    Essa macro dever declarar uma varivel do tipo string que receber uma frase digitada pelo usurio. Em seguida, ser exibida uma caixa de mensagem com a frase digitada. Quando for dado o click no boto Ok da caixa de mensagem, a frase dever ser enviada como texto para o documento do Word onde se executou a macro. A codificao da macro ser mais ou menos como a seguir:

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

    Complementao:

    a) Na msgbox a frase digitada dever aparecer na segunda linha da caixa de mensagem - use chr$(13) para concatenao de strings e mudar a linha.

    b) O string a exibir no documento do Word deve ser no tipo de fonte Times New Roman (Selection.Font.Name=Times New Roman), O tamanho deve ser 16, negrito, itlico, azul.

    c) Aps a exibio, o tamanho deve ser 12, preto, no itlico no negrito. 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. Obs. O fato de a macro ter exibido a calculadora no significa que a execuo da macro parou nesse ponto e que esteja aguardando alguma ao do usurio. As instrues aps a exibio da calculadora foram todas executadas e o processamento da macro foi encerrado. Se aps (ou antes) de exibir a calculadora voc escreveu instrues para pegar dados da rea de Transferncia e Colar no documento, essas instrues so executadas imediatamente sem interrupes at o fim da macro. Se voc quiser que o processamento d uma pausa enquanto voc faz os clculos com a calculadora e Copie o resultado para depois Colar no documento, utilize uma inputbox ou uma msgbox que interrompem o processamento at que ocorra o click no boto Ok.

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

    Aula 2 de programao com Word - Uso de formulrios

    4-Fazer uma macro diretamente no Mdulo (sem usar o gravador) que exiba um

    formulrio com layout e programao mais ou menos como a seguir.

    Layout do formulrio:

    . Programao associada ao formulrio:

    O procedimento acima exibe uma caixa de mensagem dando boas vindas. Ao ser dado o click no boto OK da caixa de mensagem, esta encerrada e o processamento passa instruo seguinte, o End, que encerra o processamento do VBA.

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

    5-Fazer diretamente no Mdulo (sem usar o gravador de macros), uma macro de nome CalculaNota que exibe um formulrio de acordo com o layout a seguir. O usurio digita as duas notas de um aluno e o programa calcula a mdia aritmtica. O programa exibe no documento do Word a nota e a informao se o aluno est Aprovado ou Reprovado. A macro ser mais ou menos assim:

    Layout do formulrio:

    Exemplo de programao associada ao formulrio acima:

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

    Complementao: Exerccios:

    a) As caixas de texto txtNota1 e txtNota2 devem aceitar apenas valores numricos e o ponto decimal. A programao a seguinte:

    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim tecla As String tecla = Chr$(KeyAscii) If (tecla < "0" Or tecla > "9") And tecla "." Then Beep KeyAscii = 0 End If End Sub

    b) As caixas de texto txtNota1 e txtNota2 devem aceitar apenas nmeros e apenas

    um nico ponto decimal.

    Obs.: a funo InStr( txtNota1.Text,.) retorna 0 se no achou o . ou retorna a posio onde encontrou o .. Verifique o Help on line.

    c) Se uma tecla invlida for digitada, o programa dever exibir mensagem de alerta.

    d) As caixas de texto txtNota1 e txtNota2 devem aceitar no mximo 4 caracteres

    (propriedade maxlength).

    e) Inclua no formulrio do VBA uma caixa de texto para ser digitado o Nome do Aluno. Todos os caracteres devem ficar em maisculo. Use as funes do VBA: Asc, Ucase, Chr. Exemplo: KeyAscii = Asc ( UCase ( Chr ( KeyAscii ) ) ) Ao ser pressionado o boto Calcula, o nome do aluno dever aparecer no documento do Word, em cor preta, negrito, tamanho 14.

    f) Ao ser pressionado o boto Calcula, exibir no documento do Word, o nome do aluno que est na caixa de texto. Em seguida, exibir a informao se o aluno est ou no aprovado. O nome do aluno dever estar formatado em cor preta, negrito e tamanho 14.

    - Se o aluno estiver aprovado, o texto APROVADO,ser na cor azul. - Se reprovado, o texto REPROVADO dever ser na cor vermelha. Aps a impresso, o texto voltar a ser preto. Aps efetuar seus testes, vamos eliminar as nossas macros do Word. Para isso, d um click com o boto direito do mouse no cone da Barra de Ferramentas e os remova. Em seguida, d um click no item Macros, selecione cada macro e d um click no boto Excluir.

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

    Alguns programas deste projeto:

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

    Segunda Parte Excel Aula 1 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, faa ficar disponvel a guia Desenvolvedor, selecione-a e d um click no itemGravar 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.

    A partir deste momento, tudo que voc fizer estar sendo gravado na macro, at que voc d um click no boto .Parar gravao.

    Quando parar a gravao, a macro ser gravada na forma de comandos VBA, com o nome que voc escolheu.

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

    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 e pressione a tecla

    Enter. . Encerre a gravao da macro, dando um click no boto Parar Gravao. Pronto: Nossa macroCabealho est gravada. Vamos v-la. D um click no boto Macros, selecione a macro Cabealho e d um click no boto Editar Aparecer uma janela parecida com a abaixo:

    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.

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

    Para execut-la, abra selecione a guia Desenvolvedor, d um click no boto 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:

    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. Criao de macros no Excel sem uso do gravador de macros 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.

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

    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, de onde se podem obter informaes valiosas. Para acionar o Help, basta selecionar o objeto ou instruo que se necessita ajuda e pressionar a tecla F1. Tente com Inputbox da macro acima. Uso de formulrios em Excel: 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 respondem a eventos provocados pelo usurio. Para testar isso, feche o Excel, e atravs do Windows Explorer copie para sua pasta ou seu pendrive, o arquivo Livros. Abra o arquivo Livros de sua pasta ou pendrive, contendo a planilha Estoque, igual abaixo:

    Obs.: No Office 2007, o nvel de segurana aumentou. Ao salvar uma planilha que contenha macros, no item de menu Salvar Como escolha uma pasta Pasta com Macros Excel. Se isso no for feito, a planilha ser salva sem as macros e voc perder todo o seu trabalho.

    Crie uma macro de nome TstForm, sem nenhuma programao (click no boto Gravar Macro ).

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

    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. Na janela Project Explorer, abra a pasta Mdulos/Mdulo1, que onde esto as macros. Inclua um formulrio associado sua planilha. v ao ambiente do VBA e d click nos itens Inserir / UserForm. Voc ver a seguinte janela:

    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 clulas A2 at A6.

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

    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 na janela Propriedades digite, na propriedade Caption, o texto Venda de Livros. Inclua no formulrio os componentes abaixo e configure o formulrio de acordo com o seguinte layout:

    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:

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

    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, d o nome a essa seleo de TabLivros e pressione a tecla Enter.

    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. Para voltar fase de projeto, interrompa a execuo do programa. Duas funcionalidades de nosso programa sero:

    a) Quando ocorrer o click no nome do livro, dever surgir o valor unitrio no label de nome LblValorUnit.

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

    b) Se digitarmos a quantidade de livros e pressionarmos o boto Calcula, o

    programa dever exibir o valor Total da compra, no label LblValorTotal. Uso de tratadores de evento em VBA com Excel Programao dos Tratadores de Eventos do VBA: A janela de programao abre-se ao ocorrer o click duplo no componente que desejamos programar. Essa janela tem a seguinte aparncia e a programao ser a seguinte:

    Faa o teste e verifique o funcionamento do programa. Selecione um livro na caixa de combinao, digite a quantidade desejada e pressione o boto Calcula. Ao fazer isso, o tratador do evento Click do boto executado e o valor total dos livros calculado. Exerccios:

    1) Fazer o valor unitrio aparecer formatado, com centavos e separador de milhares. Isso pode ser feito com ajuda da instruo format. Veja o exemplo abaixo:

    Private Sub cxcLivro_Change() lblValorUnit.Caption = Format(cxcLivro.Column(3), "R$##,###.00") End Sub

    2) Note que o valor unitrio fica muito bonito formatado, s que o programa no

    funciona mais. Verifique o motivo e conserte-o.

    3) O campo Quantidade deve aceitar apenas nmeros. Lembra do programa de clculo da mdia que fizemos quando estudamos o VBA p/ Word? bem parecido.

    4) Formatar em formato de moeda (R$) com centavos, o campo Valor Total.

    5) Inclua uma caixa de texto para que o operador possa oferecer um desconto no preo da compra. Caso o desconto exceda 20% o programa deve alert-lo sobre esse fato, mas deve realizar o clculo assim mesmo. Use a procedure do VBA msgbox. Use o Help para ver seu funcionamento.

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

    6) Inclua um label p/ exibir separadamente o valor do desconto.em moeda.

    7) O campo em que o operador vai informar o desconto, deve aceitar somente nmeros e o ponto decimal. Note que o desconto deve ser um valor real. Se voc for usar variveis reais, a declarao , por exemplo: dim desconto as single.

    8) Formate adequadamente todos os valores em formato de moeda para exibio nos campos do formulrio.

    Use a instruo Format. Exemplo, supondo-se que valorTotal varivel real, a

    instruo de formatao do campo no formulrio, ser mais ou menos como abaixo: LblValorTotal.Caption=Format ( valorTotal, R$#,###.00) Formato sugerido do formulrio Venda de Livros at agora:

    Para finalizar, selecione o boto e atribua para True sua propriedade Default. Se a propriedade default de um boto estiver True, voc pode executar o programa associado ao evento Click desse boto, pressionando a tecla Enter. Ainda no boto, coloque a letra C na propriedade Accelerator e note que a letra C do Calcula, ficou sublinhado. Agora voc pode executar o programa do boto com a combinao de teclas Alt + C.

    Salve a planilha, Teste o programa e prepare-se para apresent-lo.

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

    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)

    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, isso significa que o estoque estar

    baixo. - se estiver entre 4 e 14 unidades, estar bom (normal). - com 15 unidades ou mais, estar muito alto. Podemos usar as funes nativas do Excel e criar um expresso para resolver isso. Uma soluo melhor, seria criar a seguinte funo em VBA, que deve ser digitada no mesmo Mdulo que contm a procedure TstForm: A funo SaldoEstoque: Function SaldoEstoque(estoque As Integer) As String If estoque 3 And 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.:27

    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 End If 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 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: txtDesconto.SetFocus Txtdesconto.SelStart=0 Txtdesconto.Sellength=len(Txtdesconto.text)

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

    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: Name do formulrio: FrmLivraria, Name dos botes: cmdVendas, cmdEstoque, CmdFim. Os botes cmdVendas e cmdEstoque devero iniciar com a propriedade Visible false. Ou seja, no estaro visveis. Ficaro disponveis, ou seja, visveis, somente quando o usurio acertar a senha. Name das caixas de texto: txtNome, txtSenha. 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.

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

    Especificaes e exerccios associados a este formulrio:

    1) Ao iniciar a execuo da macro, o formulrio frmLivraria exibido, solicitando ao usurio que digite seu nome e senha.

    2) As letras digitadas no campo nome, devem ficar todas em maisculo. Vide exemplo abaixo:

    3) Se o foco estiver em txtNome e for pressionada a barra de espao, o foco deve mudar para txtSenha. Exemplo:

    If KeyAscii = 32 Then txtSenha.SetFocus

    Obs.: Para digitao e verificao da senha, o projeto deve obedecer s especificaes a seguir:

    a) Se a senha for correta, o programa exibe a mensagem: Bem Vindo Senhor

    **nome**!. Caso contrrio, o programa exibe: Caia Fora!....

    b) Os caracteres digitados na senha aparecem como *.

    c) A sequncia de caracteres do nome e da senha so finalizados pela barra de espao.

    d) A senha correta 1234.

    e) O usurio pode fazer at trs tentativas p/ acertar a senha. A cada tentativa, o programa informa que a senha informada foi incorreta e quantas tentativas faltam. Se o usurio acertar a senha, veja o item "g" desta lista. Se ocorrerem mais de 3 tentativas, o programa deve encerrar a execuo.

    f) Inclua o boto cmdFim com a propriedade Caption Fim e com a propriedade

    Accelerator = F, que ao receber o click do mouse encerra o programa. A instruo End.

    g) Inclua os botes cmdVendas com caption Vendas e o boto cmdEstoque com caption Estoque. Esses botes estaro inicialmente invisveis e s ficaro visveis quando o usurio acertar a senha.

    Ao ser dado o clique no boto cmdVendas, exibido na forma modal, o formulrio FrmVendaLivros. Dever ter a forma:

    Private Sub CmdVendas_Click() FrmVendaLivros.Show 1 End Sub

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

    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:

    Salve a planilha, Teste o programa e prepare-se para apresent-lo.

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

    Aula 3 de programao com Excel Inclua na Barra de Ferramentas de Acesso Rpido, o cone mais adequado para executar a macro Livraria que voc fez na aula anterior (Veja como voc fez no Word pgina 7 da apostila). Teste a execuo do programa para certificar-se que est tudo bem. A interface de seu programa dever estar mais ou menos assim:

    Exerccios:

    1) Quando o usurio estiver fazendo o logon e acertar a senha, desabilitar as caixas de texto de nome e senha.

    2) Inclua no formulrio FrmVendaLivros, o boto Volta, que ao receber o click do mouse fecha esse formulrio e o foco volta ao formulrio FrmLivraria.

    Crie o formulrio FrmEstoque, com a seguinte aparncia:

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

    Esse formulrio ser acionado quando o boto CmdEstoque, do formulrio FrmLivraria, for clicado. Exerccios VBA com Excel:

    1) Os campos Cdigo e Quant. s devem aceitar nmeros. 2) O campo Preo deve aceitar apenas nmeros e uma nica vrgula decimal. 3) Nos campos Nome Autor e Editora todos os caracteres devem ficar em maisculo. 4) Incluir instrues para que quando for pressionado o boto Ok, o programa

    pergunta ao usurio se quer incluir mais algum livro. Se o usurio quiser continuar, todas as caixas de texto sero limpas e o foco vai para TxtCodigo. Se o usurio quiser parar, o formulrio fechado e o controle volta para frmLivraria.

    5) No deve aceitar incluso de registros com campos em branco. 6) Para evitar a entrada de caracteres branco ou nulo, usar a funo trim. Essa

    funo elimina brancos da esquerda e da direita do string. Exemplo: if trim(txtNome.text) = then msgbox Nome em branco... Programao inicial 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, teste todo o projeto e prepare-se para apresent-lo ao professor.

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

    Terceira Parte Access Aula 1 Aula 1 de Access. Para trabalharmos com a programao do Access, iremos inicialmente reduzir o nvel de segurana para evitarmos problemas com a execuo de macros. Para isso, localize e abra o Access. No boto Office, pressione o boto Opes do Access e selecione as janelas: Central de Confiabilidade/Configuraes da Central de Confiabilidade/Configuraes de Macro. Em seguida, habilite todas as macros e feche o Access. Confira a figura abaixo:

    Copie o arquivo do Access Revenda.accdb do diretrio server2000\Prg Micro para seu pendrive e abra o arquivo dando-lhe um duplo click Esse arquivo possui tabelas contendo registros de veculos e de vendedores em uma revenda de veculos usados. Veja na figura abaixo:

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

    Uso de formulrios com Access: Selecione a tabela veculos, selecione a guia criar e d um click no cone Design de Formulrio

    Crie o formulrio a seguir: Na figura abaixo exibida a janela Propriedades, o Formulrio e os controles que voc pode colocar em seu formulrio. Se a janela Propriedades no estiver visvel, d um click com o boto direito do mouse no formulrio e, no menu popup que abrir, selecione o item Propriedades.

    Na caixa de listagem da janela de propriedades, selecione Formulrio e na guia Formato selecione o item Legenda. Digite o texto para a barra de ttulo do formulrio: Formulrio de Veculos.

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

    Em seguida, coloque duas caixas de texto no formulrio e formate-as como abaixo:

    Execute o formulrio, pressionando a tecla F5. Seu formulrio, em execuo, dever ficar parecido com a figura a seguir: Obs.:

    1) Se o formulrio estiver maximizado, no ser exibida a barra de ttulo; 2) Se na guia "Todas", a propriedade do formulrio estilo da borda estiver Nenhum,

    no ser exibida a barra de ttulo. 3) Para que o formulrio no fique maximizado, na guia "Todas", configure para "Sim",

    a propriedade "PopUp" do formulrio.

    Para voltar ao modo de design, click no formulrio com o boto direito do mouse e selecione Modo Design.

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

    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. - Nome de 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 tem por objetivo facilitar o desenvolvimento e manuteno de programas. Vamos atribuir nomes s caixas de texto de nosso formulrio. Clique na caixa de texto que conter o Modelo do veculo para selecion-la, 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, selecione o item Formulrio na caixa de listagem da janela de propriedades, e selecione a guia "Dados. 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 Formulrio1 construtor de consulta e salve-a. Veja a figura a seguir:

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

    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 propriedades. -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:

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

    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 para aula 1 com Access:

    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 unidade monetria com 2 decimais. As especificaes do tipo do campo so definidas na guia Formato.

    2 - Fazer programao para que ao ser inserido um novo registro, o que for digitado no

    campo modelo, fique em maisculo.

    Procedimento: a) Selecione a caixa de texto txtModelo e na janela Folha de Propriedades

    escolha a guia Evento. b) Escolha o item Ao pressionar tecla e d um click nos ... da direita da linha. c) Na janela Escolher construtor, selecione Construtor de cdigoe d um click

    no boto Ok.

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

    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

    Obs: Para alternar entre a janela do VBA e do banco de dados, pressione Alt + F11.

    3 - Fazer programao para que o ano de um novo veculo a ser 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.text) < 1900 Or Val(txtAno.text) > 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.

    6 O campo ano deve aceitar apenas nmeros e no mximo 4 caracteres. Se for digitado

    mais de 4 caracteres, exibir mensagem de alerta. Utilize a funo LEN que retorna o comprimento de um string use o help para verificar.

    7 No campo cor todos os caracteres digitados devem 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.

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

    10 Inclua no formulrio, os campos Estado e Placa. Todos os caracteres devem ficar em maisculo.

    11 Insira no banco de dados, atravs dos botes de navegao do formulrio, os

    registros abaixo:

    MODELO COR ESTADO PLACA ANO VALOR 1 CORSA BEGE RJ CAU3254 1998 8000,00 2 CORSA VERDE SP BBJ2429 2000 12000,00 3 CORSA BRANCO BA EBF9553 2002 15000,00 4 CORSA PRETO SP GTH8865 1998 7500,00

    12 Todos os campos devem aceitar a tecla Tab. O valor ascii em decimal da tecla Tab

    9. Pressionando-se a tecla Tab, a ordem de tabulao deve ser adequada ao usurio (de cima p/ baixo) verifique.

    Salvar o arquivo Revenda e preparar para apresentar o formulrio ao professor.

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

    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 boto de comando na guia Design, 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. Incluso de botes no formulrio do Access: Vamos inserir em nosso formulrio, todos os botes dessa categoria, exceto o boto localizar prximo.

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

    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:

    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 para cada boto que voc incluiu, o editor de VBA do Access providenciou uma "Macro Incorporada" que faz o trabalho de acordo com as funes do boto.

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

    Se for essa a nica ao esperada quando ocorrer o click no boto, ento est tudo pronto para uso desse boto pois essa macro faz apenas isso. Veja as instrues da macro, dando um click nos (...), apontado pela seta da figura acima. A est a macro incorporada! Ela feita com instrues especiais diferentes de VBA.

    Suponha que aps pressionarmos o boto cmdNovo, queremos que o foco v para a caixa de texto txtModelo ou queremos realizar algumas outras aes. Nesse caso no devemos usar o recurso de macro incorporada e sim o procedimento do evento. Para isso, d um click no boto apontado na figura abaixo, selecione o "Procedimento do evento" e click no boto com os (...).

    E l est nosso velho conhecido, tratador do evento Click do boto cmdNovo. Digite nele o cdigo abaixo e teste-o:

    Private Sub cmdNovo_Click() On Error GoTo Err_cmdNovo_Click docmd.GoToRecord, ,acNewRec Exit_cmdNovo_Click: Exit Sub Err_cmdNovo_Click: MsgBox Err.Description Resume Exit_cmdNovo_Click End Sub

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

    Verifique que o cdigo para inserir um novo registro no banco de dados funciona do mesmo modo que quando havia a macro incorporada. Porm, agora podemos incluir a codificao que quisermos, como por exemplo, aps o novo registro ser criado, mandamos o foco para a caixa de texto txtNome. A instruo que faz isso : txtNome.setfocus. Onde voc ir inclu-la? Faa isso e teste novamente o uso do boto. Uso de DoCmd: Note a palavra DoCmd no cdigo 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 em VBA associada 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 DoCmd.GoToRecord , , acNext Exit_cmdProximo_Click: Exit Sub Err_cmdProximo_Click: MsgBox Err.Description Resume Exit_cmdProximo_Click End Sub

    Na figura abaixo vemos um trecho de cdigo associado ao boto que ao receber o click, exibe no formulrio o primeiro registro.

    Outros exemplos de uso de DoCmd:

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

    DoCmd.Maximize ' maximiza o formulrio onde est inserido. DoCmd.Close ' fecha o formulrio. DoCmd.Quit ' fecha o Access. DoCmd.OpenForm "frmMenu" 'exibe o formulrio de nome frmMenu. Exerccios Access Aula 2: 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. 3 x 2 = 6 0 x 3 = 0 0 x 4 = 0 6 x 5 = 30 0 x 6 = 0 5 x 7 = 35 0 x 8 = 0 0 x 9 = 0 2 x 10= 20 + -------- 91 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

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

    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 sua 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: 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

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

    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 seguir:

    Obs.: No Access, para verificar se um campo do banco de dados contm o carter nulo, usamos a funo IsNull. Veja o exemplo 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. SALVE O PROJETO E PREPARE-SE P/ APRESENT-LO AO PROFESSOR.

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

    AULA 3 DE ACCESS: Abra o arquivo de Access Revenda da aula anterior e teste-o p/ verificar se tudo funciona de acordo com as especificaes anteriormente fornecidas. Exerccios: 1 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. 2 Ao pressionar o boto Inserir Registro o foco deve ir para a caixa de texto txtModelo. Verifique se a ordem de tabulao est correta. Se no estiver, corrija-a. A propriedade que especifica a ordem de tabulao ndice de tabulao. Esta inicia por zero e vai seqencialmente de acordo com a tabulao desejada. Caso voc tenha dvidas quanto a partes do cdigo, veja exemplos nas prximas pginas. Lembre-se que a programao final do evento Click do boto cmdVender estava 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

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

    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

    Quando voc fizer e utilizar a funo CalculaDC, o programa deve ficar mais ou menos assim:

    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 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: ", " V e n d a d e V e c u l o") ' verifica se foram digitados s numeros. If Len(codigostr) > 10 Then MsgBox "Cdigo com mais de 10 dgitos - redigite!" Exit Sub End If

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

    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

    Alguns problemas podero ocorrer, que devero ser solucionados: Verifique os aspectos da esttica do formulrio: alinhamento e tamanho dos componentes, bom balanceamento de cores (no deve ser um carnaval e nem totalmente cinza), etc.

    A seguir algumas dicas sobre problemas observados em projetos anteriores:

    1) Ao inserir um novo registro o foco deve ir para txtModelo (txtModelo.SetFocus).

    2) Verifique que ao inserir um novo registro, se o campo de cdigo do vendedor estiver com o valor zero, mesmo assim o boto cmdVender dever estar habilitado.

    3) Se o campo do banco de dados de cdigo de vendedor estiver preenchido,

    significa que aquele veculo j foi vendido. Portanto o boto cmdVender dever estar desabilitado com o caption Vendido.

    4) Efetue a venda do primeiro veculo da tabela, notando que o boto cmdVender torna-se desabilitado, com caption Vendido. Feche o Access e abra-o novamente, acessando o formulrio de vendas. O boto cmdVender est desabilitado e com caption Vendido? Para resolver esse problema, programe adequadamente o tratador de evento FormLoad. Ele executado quando o

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

    formulrio carregado na memria e tem por objetivo atribuir condies iniciais a objetos, inicializar variveis, etc.

    Faa uma reviso geral at este ponto do projeto. O formulrio deve estar minimamente com a seguinte aparncia:

    Continuao: Dando continuidade a nosso projeto, faa os exerccios a seguir:

    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. 4 A caixa de texto Salrio Fixo deve aceitar somente nmeros e uma nica vrgula

    decimal. Esse formulrio dever ficar minimamente com a seguinte aparncia:

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

    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 IsNumeric) - 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 e este deve ser atualizado (DoCmd.RunCommand acCmdRefresh).

    - Os botes devero ser novamente habilitados e as caixas de texto devero ser

    novamente desabilitadas. - A caixa de texto SalarioFixo deve aceitar apenas nmeros e um nico ponto decimal. 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.:53

    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. SALVE O PROJETO E PREPARE-SE PARA APRESENT-LO..

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

    Aula 4 de Access. Abra o arquivo Revenda, teste-o e verifique se tudo funciona a contento de acordo com o que foi especificado. At agora, temos dois formulrios: Formulrio de Veculos e Cadastro de Vendedor. Nesta aula criaremos um relatrio de vendas efetuadas e um relatrio de veculos com totais e quebras. Para exibio desses dois relatrios, criaremos um formulrio. Uso de relatrios com Access: Execute os procedimentos a seguir: Criao do primeiro relatrio. 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. Para iniciar, acione a guia Ferramentas de Banco de Dados e d um click no cone Relaes. Na janela de Relaes do Access crie um relacionamento entre os campos codvendedor entre a tabelas Veiculos e Vendedor. No imponha integridade referencial.

    D um click no boto Tipo de associao... e em Propriedades 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, selecione a guie Criar e d um click no cone Assistente de Relatrio. Vamos criar nosso relatrio usando o assistente e posteriormente iremos personaliz-lo.

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

    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.

    D um Click no boto Avanar e na prxima tela escolha o agrupamento por codvendedor. Click novamente em Avanar.

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

    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.

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

    D um click no boto Concluir para ver o relatrio criado:

    Em seguida entraremos no modo de edio do relatrio para adequ-lo a nossas necessidades. Para isso, d um click no relatrio com o boto direito do mouse e escolha Modo Design Estando no modo de edio do relatrio, 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.

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

    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 (Fonte de Controle [...]) de acordo com o seguinte:

    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.

    Obs.: Note que o relatrio est numa forma um tanto bagunada e no muito lgica para consulta por um usurio. Deixe-o de uma forma mais fcil para consulta. Use seu bom senso. Obs.: No caso de um vendedor no vender nenhum veculo, note que no impresso o campo salrio. Est errado, pois o vendedor deveria receber o salrio fixo. Isso ocorre porque o Access no faz a converso automtica de nulo para zero em soma de valor. Para corrigir isso, use a funo NZ, que faz a converso de nulo p/ zero. Ficar assim: =[salrio fixo]+nz([Soma De valor];0)*0,1

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

    Criao do segundo relatrio. Ainda atravs do assistente, crie agora o relatrio de nome Relat_Veiculos para exibio dos dados da tabela Veiculos. Os registros devero ser exibidos em ordem alfabtica de modelo de veculo, com os agrupamentos (quebras com totais): A cada quebra de modelo dever haver um subtotal de valor por modelo. Dentro de cada modelo dever haver um sob total por ano de veculo, daquele modelo. Vide exemplo de relatrio abaixo:

    Obs.: Se o relatrio no estiver adequado ao ser criado pelo assistente, d-lhe um click com o boto direito do mouse e escolha Modo Design. A voc pode configur-lo como quiser. Em seguida, crie um novo formulrio contendo dois botes para apresentar os relatrios. Ao receber o click do mouse, cada boto exibe o relatrio correspondente criado no item anterior. Utilize o Assistente de boto de comando, com o grupo de Operaes de relatrio e a ao Visualizar relatrio. Veja o figura a seguir:

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

    Escolha o relatrio correspondente, coloque o nome adequado no boto, conclua a configurao e teste o boto. O formulrio deve ficar mais ou menos com a seguinte aparncia:

    Faa um teste geral em seu sistema, que ser finalizado na prxima aula. Apresente-o ao professor. **********************************************************************************************

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

    Aula 5 de Access. Abra o arquivo Revenda para fazer os acertos finais. Iremos implementar algumas melhorias no projeto, tais como no permitir o cadastramento de veculos em duplicidade ou de vendedores com mesmo cdigo. Para exemplificar isso, criaremos uma funo baseada no livro Programando em Microsoft Access com VBA, de Flvio Morgado, em conjunto com o formulrio abaixo. A funo que utilizaremos consulta uma tabela de um banco de dados para verificar se um registro est ou no presente.

    Option Compare Database Option Explicit Function achaReg() As Boolean Dim db As Database Dim rs As Recordset Dim strcriterio As String Dim strmsg As String Dim strtitle As String Dim procurado As String Set db = CurrentDb() Set rs = db.OpenRecordset("veiculos", dbOpenDynaset) procurado = InputBox("Digite o veculo desejado...") strcriterio = "modelo like '" + procurado + "'" rs.FindFirst strcriterio Do While Not rs.NoMatch strmsg = "modelo = " + rs!modelo strtitle = "sucesso" MsgBox strmsg, vbInformation, strtitle rs.FindNext strcriterio achaReg = True rs.Close

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

    Exit Function Loop If rs.NoMatch Then strmsg = "registro nao encontrado" strtitle = "fim do arquivo" MsgBox strmsg, vbInformation, strtitle achaReg = False End If rs.Close End Function Private Sub cmdTeste_Click() If achaReg Then MsgBox "Registro encontrado" Else MsgBox "Registro no encontrado" End If End Sub

    EXERCCIOS: 1-Faa a adequao da funo acima e use-a para que no seja possvel a incluso na

    tabela Veiculos, de registros de veculos de mesma placa. 2-Faa a mesma coisa para a tabela Vendedores, para que no seja permitida a

    incluso de vendedores com mesmo cdigo. 3-Inclua mais um formulrio de nome frmPrincipal, que ser o formulrio pelo qual a

    aplicao ir iniciar, quando abrirmos o arquivo Revenda. Esse formulrio dever ter 4 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 exibe na forma modal o formulrio frmExibeRelatorio. - o quarto boto encerra o processamento (nome=cmdFim). Obs.:

    I) Para exibir um formulrio na forma modal, voc deve configurar suas propriedades como: guia Outra / Janela restrita / Sim

    II) Se voc precisar de uma varivel global a todos os locais do projeto, declare-a dentro de um mdulo, de acordo com a especificao a seguir: Public var1 as integer Varivel global ao projeto Dim var2 as integer Varivel local ao mdulo

    4-Inclua nesse formulrio (propriedades: Formulrio / formato / Imagem) a figura Carrinho.jpg, que dever ficar mais ou menos como a prxima figura. 5-Inclua uma "hint" (dica) em cada boto desse formulrio, informando a funo de cada um. A propriedade "Texto das dicas sobre controles".

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

    6- Finalizando, vamos configurar as condies de inicializao de nosso sistema. a) Para que o usurio no tenha acesso aos controles de formulrio, selecione o

    formulrio e configure a propriedade Estilo da borda para Nenhum. Configure tambm a propriedade Seletores de registro para No

    b) Programar o evento Form_Load() do formulrio, para que ao ser carregado, o mesmo

    fique maximizado:

    Form_Load() doCmd.Maximize End Sub

    c) Para que os relatrios fiquem visveis (na frente do formulrio que os chama), configurar suas propriedades PopUp Sim e Janela restrita Sim.

    d) Configure o Access para que o usurio no possa acessar seus recursos. Para isso, d um click no boto Access / Opes do Access / Banco de Dados Atual, e configurar a janela apresentada de acordo com a figura a seguir.

    e) 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. Veja a janela a seguir - Note que a imagem mostra apenas uma parte das configuraes, ao descer a tela, h outras opes que devem ser desligadas.

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

    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 aos relatrios 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 e a mantenha pressionada at o arquivo abrir.

    Faa um teste geral em seu sistema e verifique se tudo funciona a contento, antes de chamar o professor para avaliao.

    Salve tudo e prepare-se para a apresentao final do projeto.

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

    AUTOMATIZAO DE TAREFAS O VBA tambm utilizado em arquivos de script, ou seja, um arquivo texto com extenso ".vbs", contendo instrues que so interpretadas e executadas linha a linha, pelo programa "wscript.exe" do Windows. A execuo ocorre ao darmos um duplo click no arquivo com extenso ".vbs". Exemplo: 1) Clique com o boto direito do mouse na rea de trabalho selecione Novo/Documento de Texto. 2) No novo documento, clique com o boto direito do mouse e selecione Editar. 3) Ao abrir o Bloco de Notas, digite o cdigo abaixo (note que so instrues VBA).

    dim variavel ' todas as variveis em arquivos VBS so do tipo variant variavel=0 do while variavel

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

    Exerccio1: Modifique o programa para ficar com a seguinte codificao:

    option explicit ' Obriga o programador a declarar todas as variveis dim variavel ' todas as variveis em arquivos VBS so do tipo variant dim testeTecla variavel=0 do while variavel

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

    Exerccio3: Digitar e testar o script abaixo, que executa o Access e abre o arquivo "revenda.accdb" de seu projeto das aulas anteriores. Obs.:Para executar o Access e abrir um arquivo ".accdb", use as instrues abaixo. O

    argumento "5" no final da instruo "varShell.run" significa que o programa ser exibido em janela normal e o argumento "true" significa que, as instrues do script que vierem aps a instruo que executou o Access, sero processadas somente aps o Access ser encerrado. Se quisermos que o programa a ser executado fique maximizado, o argumento o nmero "3".

    option explicit dim varShell 'Cria varivel Set varShell =wscript.CreateObject("WScript.Shell") 'Cria uma instncia de

    objeto varShell.run

    ("""msaccess.exe""C:\Users\Hamilton\Desktop\revenda.accdb"),5,true Obs.:

    1-Os nomes das pastas no podem conter espao. Por exemplo, se o caminho for d:\meus documentos\... utilizar: d:\meusdo~1\... O nome abreviado da pasta com o "~" deve ter 8 caracteres, incluindo o "~".

    2- Para maiores informaes sobre ".run", consulte o site: http://msdn.microsoft.com/en-us/library/d5fk67ky(v=vs.85).aspx

    Complemento: Mude o argumento para "3" (p/ maximizar o Access na execuo) e inclua algumas instrues aps a chamada do Access. Verifique que com o argumento "true" essas instrues somente sero executadas quando encerrarmos o processamento do Access. Aps esse teste, mude o argumento para "false" e verifique o resultado. Exerccio4: Vamos testar mais um script visando avaliar algumas caractersticas especiais do wscript. Crie um novo arquivo de script de nome looping, contendo o cdigo abaixo, analise e entenda cada linha de cdigo. A seguir, execute o arquivo dando-lhe um duplo click:.

    option explicit 'Obriga a declarar todas as variveis on error resume next 'Se ocorrer algum erro, pula p/ prxima instruo dim varShell wscript.Echo "O B AAAA! VAMOS BAGUNAR TUUUUDOOO..." & chr(13) &

    "pressione OK para zoar..." Set varShell =wscript.CreateObject("WScript.Shell") do

    wscript.sleep 200 'dorme por 200 milissegundos varShell.sendkeys "{NUMLOCK}" wscript.sleep 100 varShell.sendkeys "{CAPSLOCK}"

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

    wscript.sleep 100 varShell.sendkeys "{sCROLLLOCK}" wscript.sleep 200 varShell.sendkeys "{sCROLLLOCK}" wscript.sleep 100 varShell.sendkeys "{CAPSLOCK}" wscript.sleep 100 varShell.sendkeys "{NUMLOCK}"

    loop ' looping infinito... wscript.Echo "testando!... vamos ver se sai do looping..."

    Note o que acontece com as luzes de NumLock, CapsLock e ScrolLock e tente digitar algo aproveitvel. Tente parar a execuo do script pelos mtodos tradicionais: Alt f4, Ctrl Break, etc. Obs.: Caso seu programa entre em looping, necessrio ativar o gerenciador de tarefas (Ctl+Alt+Del), acionar a guia "processos", selecionar o processo "wscript.exe" e clicar no boto "finalizar processo". Exerccio 5: Criar o arquivo de script de nome backUpBd que faa uma cpia backup de um banco de dados. Esse procedimento costuma ser usado e pode ser muito til para preservar suas informaes em uma cpia anterior do banco de dados, antes que esse arquivo sofra alteraes. Se houver algum problema com o banco de dados a ser atualizado, como por exemplo ficar corrompido, voc tem uma cpia dele antes da atualizao. Como exemplo, o cdigo abaixo usa o arquivo "testebd.accdb"que se encontra no diretrio raiz do drive "d" e faz uma cpia no diretrio " c:\backup " com nome "anterior.accdb":

    option explicit dim objFSO, Wshs Set objFSO = CreateObject("Scripting.FileSystemObject") Set Wshs = WScript.CreateObject("WScript.Shell") objFSO.CopyFile "d:\testebd.accdb" , "c:\backup\anterior.accdb"

    Adapte o script acima para o seu ambiente e teste-o. Obs.: 1-Note que o script acima no cria novas pastas, apenas copia o arquivo em pastas existentes. Para criar pastas, faremos outro exerccio. 2-Se o arquivo a gravar j existir, este ser sobrescrito. Para complementar este exerccio:

    a) Transforme o arquivo script em somente leitura

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

    b) Crie um atalho para execut-lo, com cone significativo. Exerccio 6: Criar um script que ir automatizar algumas tarefas para acionar o banco de dados "revenda.accdb" de seu projeto das aulas anteriores. Esse script dever fazer o seguinte: a) Ao iniciar deve exibir uma caixa de mensagem com trs botes: Sim, No, Cancela. Nessa caixa, alm de dar boas vindas ao usurio dever constar as informaes a seguir. b) Dever informar ao usurio que caso ele v fazer atualizaes no banco de dados, dever clicar no boto "Sim", que o backup ser feito automaticamente. c) Se for fazer apenas consultas, clicar no boto "No", que no ser feito backup. d) Se o usurio quer simplesmente sair, dever clicar em "Cancela". e) Aps o click em um dos botes "Sim" ou "No", o script deve executar o Access com o arquivo revenda.accdb, no modo maximizado. f) Ao encerrar a execuo do Access, o script deve verificar se houve a criao do backup e alertar o usurio para tomar as providncias necessrias p/ a preservao desse backup. g) Em seguida, o script deve exibir mensagem do sucesso ou no da operao. h) Gravar o arquivo de script no modo "Somente Leitura", criar um atalho para sua execuo e colocar nesse atalho, um cone representativo das operaes das tarefas a realizar. Complemento: Analise e teste o script abaixo - Ele cria uma pasta de nome "copia" no drive "d" e uma subpasta de nome composto pelo ano, ms, dia, hora, minuto e segundo. Teste o script e o inclua no programa do exerccio 6, para que o arquivo backup do banco de dados no seja sobrescrito. Com esse complemento, cada vez que for gerado um novo backup, uma nova pasta ser criada p/ gravar o banco de dados anterior, que ser preservado.

    option explicit dim varShell,varData, frase Set varShell =wscript.CreateObject("WScript.Shell") varData=year(now) & month(now) & day(now) & hour(now) & minute(now) &

    second(now) msgbox varData frase="cmd /k CD D:\& mkdir d:\copia\" & vardata msgbox frase varShell.run frase,1,true ' Cria no drive "d" uma pasta de nome "copia" e sub pasta

    "yyyymmddhhmmss" msgbox "operao realizada com sucesso!",0,"EXECUO DE PROGRAMA"

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

    A partir do script acima alterar o exerccio 6 para que o backup do banco de dados Revenda seja sempre gravado em uma nova pasta. Dessa maneira, todos os backups estaro identificados pela data de gravao e no mais ocorrer o problema de sobreposio.

    Obs.: Se quiser fechar a tela do DOS, basta incluir a instruo " & exit" no string

    frase, ou seja, o contedo da varivel frase ficar assim: frase="cmd /k CD D:\& mkdir d:\copia\" & vardata & " & exit"

    Apresentar o script ao professor para avaliao.

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

    PROJETO FINAL DA DISCIPLINA

    O projeto constitui-se na confeco de um sistema em Access para controlar as notas e faltas dos alunos da disciplina "Programao em Microinformtica". O sistema deve ser encabeado por um formulrio principal cujo acesso se d atravs de uma senha, que o usurio pode tentar acertar por at trs vezes. O sistema dever ter os mdulos ALUNOS e RELATRIOS. O mdulo ALUNOS dever ter as seguintes funcionalidades: Incluso, Alterao e Excluso. O mdulo RELATRIOS dever exibir dois tipos de relatrios: de notas e de faltas. Deve haver duas possibilidades de relatrio de nota: por ordem alfabtica de aluno e por ordem decrescente de nota. Descrio sucinta sobre os itens solicitados acima: INCLUSO: Solicita o nmero de matrcula do aluno, verifica o dgito de controle e verifica se o aluno j existe no cadastro. Se no existir e se o dgito for correto, o aluno cadastrado. ALTERAO: Solicita o nmero de matrcula, verifica o dgito e verifica se o aluno est no banco de dados. Abre campos para modificao. Obs.: deve haver dois tipos distintos de modificao: Dados Cadastrais e de notas. Quando houver modificaes em notas deve gravar a data (do sistema) em que as notas foram modificadas. EXCLUSO: Idem anterior, mais solicitao de confirmao da excluso; RELATRIOS: NOTAS Exibe todas as notas e o conceito de cada aluno, de acordo com o critrio de avaliao.

    Deve exibir a nota numrica e o conceito em forma de letra, de acordo com o critrio de avaliao especificado no Plano de Ensino. O Conceito deve ser calculado atravs de uma funo.

    FALTAS Informa o total de faltas e se o aluno est reprovado por faltas. Capriche nas funcionalidades e no visual!!!. Obs.: Aqui voc o analista que projeta e implementa o sistema e deve, ao mesmo tempo, colocar-se no lugar do usurio. Faa um sistema intuitivo e amigvel, e que no possibilite ao usurio cometer erros. Por exemplo, se um componente tal como um boto ou uma caixa de texto no tiverem funo em determinada fase de funcionamento do sistema, ento eles no deveriam estar l. Pense na possibilidade de desabilit-los ou torn-los invisveis, at que se precise deles. Outro exemplo seria o usurio estar alterando os dados cadastrais de um aluno e ter disposio o boto excluir. Seria um contra-senso. A previso de confeco deste projeto de quatro semanas a e vale de 0 a 40 pontos.

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

    Ao final desse tempo, o projeto dever ser apresentado ao professor e ser entregue em CD ou DVD para avaliao. Importante:

    A execuo do programa inicial do projeto deve ser feita atravs de um script que automatize tarefas importantes visando a preservao do sistema, o auxlio ao usurio ou outras que voc julgue importantes ou interessantes. *** Na apostila "Scripts Interessantes" voc pode encontrar exemplos de scripts elaborados e

    utilizados por alunos de turmas anteriores. SUGESTES INICIAIS QUE PODERO AJUDAR NA CONFECO DO TRABALHO:

    1) Importar atravs do Access o arquivo fornecido pelo professor Sua_Turma_PrgMicro.xls e trabalhar esse arquivo.

    Obs.: A importao pode ser feita abrindo o Access e criando um novo banco

    de dados (Banco de Dados em Branco). Em seguida, selecione a guia "Dados Externos" e d um click no cone Excel. Localize a planilha que quer importar e d um click em OK. Siga o assistente para a importao e aps o arquivo ser importado, configure a estrutura do banco de dados a seu gosto.

    2) Segundo informaes do CEI (Centro de Informtica do CEETEPS), o clculo de dgito de

    controle pelo mdulo 11 realizada de acordo com o cdigo abaixo. A rotina do CEI faz o processamento do nmero de matrcula em forma de texto e no numrica, como fizemos em nossos exemplos anteriores. Isso til quando usamos nmeros grandes, com mais de 10 dgitos.

    Rotina para clculo do dgito de verificao do nmero de matrcula dos alunos da FATEC-SP:

    Public Function Checa_Matricula(txtMatricula) Dim Ix As Integer, Soma As Integer, Dgito As Integer For Ix = 1 To 7 If Not IsNumeric(Mid(txtMatricula, Ix, 1)) Then MsgBox "Matrcula contm caracter no numrico", VB_Question Ix = 8