Você está na página 1de 80

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 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.: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<4
msgbox "Teste de uso do VBS",3,"Voc clicou :" & variavel
variavel=variavel + 1
loop

4) Salve o arquivo: Arquivo/Salvar como.../Tipo/Todos os arquivos/teste1.VBS/Salvar
5) Execute o arquivo dando-lhe um duplo click e confira o resultado com a figura abaixo:



Note durante a execuo, o cone do programa wscript.exe na barra de tarefas do
Windows.


Vamos estragar esse programa, pois somos programadores inexperientes e ainda
fazemos muitas bobagens...

Altere a instruo variavel=variavel + 1 para variave1=variavel + 1

Se voc no prestar bastante ateno, no vai achar o erro, pois o programa no acusa
nada, s que no faz o que se espera dele. Salve-o e teste novamente.

Esse tipo de problema resolvido com o uso da clusula Option Explicit, que obriga o
programador a declarar todas as variveis. Nosso programa agora ficar assim:

Option Explicit
dim variavel ' todas as variveis em arquivos VBS so do tipo variant
variavel=0
do while variavel<4
msgbox "Teste de uso do VBS",3,"Voc clicou :" & variavel
variave1=variavel + 1
loop
Salve o programa e teste-o
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<4
testeTecla=msgbox ("Teste de uso do VBS",3,"Voc clicou :" & variavel)
variavel=variavel + 1
msgbox testeTecla
loop

Note que no programa acima, a varivel testeTecla recebe o valor retornado pela funo
msgbox, quando esta recebe o click do mouse em um de seus trs botes.
Execute o script e verifique que ao ocorrer o click em um dos botes Sim, No ou
Cancelar, a funo msgbox retorna um dos valores 6,7 ou2, respectivamente


Exerccio 2:

Modifique o programa para que ele continue contando os clicks apenas se receb-los no
boto "Sim". Se o click for no boto "No", o programa deve informar que o click foi
nesse boto e encerrar. Se o click for no boto "Cancelar", o programa encerra sem
nenhum aviso.


Obs.
1-A instruo que encerra o processamento de um script, wscript.quit.
2-Tente fazer os exerccios. Se tiver dvidas, h exerccios resolvidos no final da apostila.


Na figura abaixo vemos um exemplo de um script que executa o programa cmd.exe (abre
o ambiente do ms-dos). O argumento 2 o deixa minimizado, e o argumento true significa
que a execuo do script interrompida at que o programa que est sendo executado
seja encerrado. Digite e teste o script abaixo.




Utilize o script que voc testou acima para executar outro programa qualquer de sua
preferncia.


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
Exit Function
End If
Next Ix
Soma = 0
'************************************************************
' Soma com pesos 7,6,5,4,3,2,1 para cada algarismo da Matrcula
'************************************************************
For Ix = 1 To 7
Soma = Soma + (Val(Mid(txtMatricula, Ix, 1)) * (8 - Ix))
Next Ix
'***********************************************
' Obtem resto da diviso de Soma por 11
'***********************************************
Dgito = Soma Mod 11

If Dgito > 1 Then
Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:73
Dgito = 11 - Dgito
End If
If Dgito <> Right(txtMatricula, 1) Then
MsgBox "Dgito de verificao diferente do informado.", VB_Question
End If
End Function


Obs.: Note que o processo de clculo o mesmo do mdulo 11 porm, no clculo de dgito do
nmero de matrcula do aluno da FATEC SP, o nmero de menor ordem multiplicado por 1 e no
por 2 , como no mtodo usual.

Exemplo: 0810698-2

0 8 1 0 6 9 8
x x x x x x x
7 6 5 4 3 2 1

0 + 48 + 5 + 0 + 18 + 18 +

8 = 97

97 / 11 = 8 resto 9 Neste caso dgito ser 11 - 9 = 2



3) Para confeco do projeto, o cdigo abaixo poder ser til na codificao do tratador do
evento click do boto Localizar Registro. Ao localizar o registro procurado, uma cpia de
seus campos ser exibida no formulrio.


Private Sub cmdLocalizar_Click()
Dim codMatr As Variant
Dim codigolido As Long
codMatr = InputBox(" Digite a Matricula!", " I n f o r m a r M a t r i c u l a ")
If codMatr <> Null Or codMatr <> "" Then

codigolido = Val(codMatr)
If Checa_Matricula(codigolido) Then

If achaMatricula(codMatr) Then

'Encontrar o registro que coincide com o controle
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[Matrcula]='" & codMatr & "'"
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
Else

' Nao encontrou a matricula no BD
MsgBox "Matrcula no encontrada..."
End If
End If
End If

End Sub



Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:74
Function achaMatricula(codMatr) As Boolean
Dim db As Database
Dim rs As Recordset
Dim strcriterio As String
Dim procurado As String
Set db = CurrentDb()
Set rs = db.OpenRecordset("Alunos", dbOpenDynaset)
strcriterio = "Matrcula like '" + codMatr + "'"
rs.FindFirst strcriterio
Do While Not rs.NoMatch
rs.FindNext strcriterio
achaMatricula = True
rs.Close
Exit Function
Loop
If rs.NoMatch Then
achaMatricula = False
End If
rs.Close
End Function



Disciplina: Programao em microinformtica - VBA com Word / Excel / Access pg.:75
COMPLEMENTO Alguns programas do projeto Access das aulas e dos exerccios de
script:

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: ", " 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

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




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

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

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

End Function

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

Programas solicitados nos exerccios:
Exerccio 2:
option explicit
dim variavel ' todas as variveis em arquivos VBS so do tipo variant
dim testetecla
variavel=0
do while variavel<4
testetecla=msgbox ("Teste de uso do VBS - Continua o teste???",3,"Voc clicou
:" & variavel)
variavel=variavel + 1
if testetecla = 7 then
msgbox "voc clicou No..."
wscript.quit
end if
if testetecla =2 then wscript.quit
loop

Exerccio 6:
option explicit
dim testetecla ,objFSO, Wshs, usrProfile, varShell

testetecla=msgbox ("Sr. usurio: bem vindo ao acesso a banco de dados. Clique em Sim
para gravar um arquivo de backup.",3,"BOAS VINDAS AO SISTEMA REVENDA")

if testetecla=2 then wscript.quit
if testetecla = 6 then
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Wshs = WScript.CreateObject("WScript.Shell")
usrProfile = Wshs.ExpandEnvironmentStrings("%UserProfile%")
objFSO.CopyFile "d:\testebd.accdb" , "c:\backup\anterior.accdb"
msgbox "Arquivo de backup gravado..."

end if

Set varShell =wscript.CreateObject("WScript.Shell") 'Cria uma instncia de objeto
varShell.run ("""msaccess.exe""C:\Users\Hamilton\Desktop\revenda.accdb"),3,true

if testetecla=6 then wscript.Echo "Sr. Usurio... foi gravado o arquivo backup ... favor
providenciar!"
msgbox "operao realizada com sucesso!",0,"Sistema banco de Dados"


Exerccio 6 com complemento
option explicit
dim testetecla ,objFSO, Wshs, usrProfile, varShell, vardata, frase, novaSubPasta

testetecla=msgbox ("Sr. usurio: bem vindo ao acesso a banco de dados. Clique em
Sim para gravar um arquivo de backup.",3,"BOAS VINDAS AO SISTEMA REVENDA")

Set varShell =wscript.CreateObject("WScript.Shell") 'Cria uma instncia de objeto

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

if testetecla=2 then wscript.quit
if testetecla = 6 then ' o arquivo backup ser criado...

varData=year(now) & month(now) & day(now) & hour(now) & minute(now) &
second(now)

msgbox varData

frase="cmd /k CD D:\& mkdir d:\copia\" & vardata ' monta string criao nova
pasta
msgbox frase
varShell.run frase,1,true ' Cria no drive "d" uma pasta de nome "copia" e sub
pasta "yyyymmddhhmmss"
' Far backup do arquivo

novaSubPasta="d:\copia\" & varData & "\anterior.accdb"
msgbox novaSubPasta
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set Wshs = WScript.CreateObject("WScript.Shell")
usrProfile = Wshs.ExpandEnvironmentStrings("%UserProfile%")
objFSO.CopyFile "d:\testebd.accdb" , novaSubPasta
msgbox "Arquivo de backup gravado..."

end if

'execuo do Access
varShell.run ("""msaccess.exe""C:\Users\Hamilton\Desktop\revenda.accdb"),3,true

if testetecla=6 then wscript.Echo "Sr. Usurio... foi gravado o arquivo backup ... favor
providenciar!"
msgbox "operao realizada com sucesso!",0,"Sistema banco de Dados"



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

MORGADO, Flvio. Programando em Microsoft Access com VBA, Rio de Janeiro, Cincia
Moderna, 2008.


No desenvolvimento dos scripts da aula "AUTOMATIZAO DE TAREFAS", foram
consultados os seguintes endereos web:

http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/script56/html/wsconWSHBasics.asp
http://msdn.microsoft.com/en-us/library/d5fk67ky(v=vs.85).aspx
http://www.macoratti.net/wsh_1.htm