Usando VBA - Visual Basic for Aplications


Hoje veremos como usar o VBA - Visual Basic for Applications.

Trabalhando com VBA

Você já ouviu falar em Visual Basic for Aplications(VAB) ? Você alguma vez já utilizou VBA ? Bem , se você já desenvolveu algum projeto usando Visual Basic podemos dizer que já usou VBA, pois muito da funcionalidade existente no Visual Basic é na verdade VBA.

Muitas funções matématicas tais como Sqr(), Sin() , Tan() são VBA. Muitas funções para conversão e tratamento de strings tais como :Cstr(), Cint() e CDbl() , Left() , Mid(), Format() são VBA.

A partir da versão 97 do Office toda suite Microsoft (incluido ai o Project ) incluiu o VBA como linguagem embutida. E daí ? você pode estar se perguntando. E daí !!! Ora, com o VBA a aplicação está apta a expor toda a sua funcionalidade de maneira a permitir que outras aplicações a acessem via VBA. Ou seja, podemos acessar toda a funcionalidade do Word, Excel , PowerPoint, Access através do Visual Basic graças ao VBA.

Para trabalhar com VBA você usa a mesma interface , o Ambiente de Desenvolvimento Integrado (IDE). No Office o IDE é chamdo de Visual Basic Editor. Voce pode acessar o Visual Basic Editor no Word, Excel e PowerPoint selecionando o menu Ferramentas e a opção Macro clicando a seguir em Editor do Visual Basic (ou Alt+F11). No Access 97 , para acessar o Visual Basic Editor , selecione o menu Inserir e clique em Módulo.

Visual Basic Editor

Para você utilizar o VBA de maneira a realizar tarefas usando os aplicativos do pacote Office você vai ter que conhecer os objetos residentes em cada aplicativo Office.Fazer isto seria uma tarefa árdua, mesmo para um programador experiente. Mas sempre existe uma maneira mais fácil de se realizar uma tarefa e neste caso temos uma ferramenta que permite a você compreender os vários objetos presentes nos aplicativos Office como também permite a você escrever código VBA quase que intuitivamente. Não acredita ???? Estamos falando do Gravador de Macros.

Escrever macros no Microsoft Office é a mesma coisa que escrever uma procedure em VBA e quando você usa o Gravador de Macros você atribui um nome á macro que quer gravar e isto nada mais é que dar um nome a uma procedure. Depois que você gravar a macro ao visualizar o código associado à macro você verá o nome da macro atribuida ao mome da procedure. Vamos mostrar isto, veja o exemplo a seguir:

Criando uma Macro para inserir uma linha de texto no Word

  1. Abra um documento do Word
  2. Do menu Ferramentas , selecione Macro e a seguir a opção Gravar Nova Macro
  1. Na janela de diálogo Gravar Macro , digite um nome para a macro e selecione o Documento1(documento) para que a macro não seja gravada em normal.dot clicando a seguir em OK.
  1. Você voltará ao documento e a barra de ferramentas do gravador surgirá suspensa no documento. Digite a linha : Teste de inclusão de linha (ou outra coisa qualquer) e tecle ENTER.
  1. Finalmente clique no botão Parar Gravação da Macro e , para ver o código gerado, selecione a opção Ferramentas => Macros... clicando a seguir em Editar . Você verá o seguinte código:

O código necessário para digitar(TypeText) uma linha e inserir(TypeParagraph) uma linha em branco está mostrado acima.

Percebeu agora como você pode explorar esta ferramenta para escrever código para realizar tarefas e a seguir copiar e colar o código para uma aplicação Visual Basic ?

Usando o Object Browser

Outra maneira de aprender sobre os objetos, métodos , propriedades e seus eventos e usar o Object Browser. Para acionar o object Browser estando no Visual Basic Editor pressione a tecla F2.(Figura abaixo)

Object Browser

Usando VBA para programar os assistentes do Office (Agents)

Antes que você durma no teclado vamos começar a mostrar algo prático usando VBA. Vamos trabalhar com os 'Office Assistants' - Os Assistentes do Office . Se você ainda não se tocou ai vai uma dica : Voce lembra daquele Clip (chato) que ao abrir o Word aparece na tela mostrando a sua carinha ? Ele é um assistente . Além dele temos o Pingo, o Gênio, o Robo, o SuperDoc , o Office Logo, o Rabisco e o William. (nossa !!). Pois é, eles são objetos e como objetos possuem propriedades e métodos . Agora a boa notícia : 'Podemos programar os assistentes' manipulando suas propriedades e métodos.

Vamos programar nosso primeiro assistente. Iremos usar o Clip , pois os demais não estão disponíveis . (Se você quiser se desenvolver nesta área visite www.microsoft.com/msagent ) .

  1. Vamos fazer com que o Clip realize uma ação. As ações dos agentes já estão definidas , bastando selecionar o agente e selecionar a ação desejada. Iremos fazer com que o Clip dê aquele estalo. Digite o código mostrado na figura a baixo e clique no botão Executar:

Temos basicamente o seguinte no código acima:

  • Definimos o assistente - With Assistant
  • Tornamos o assistente visível - Visible
  • Definimos a ação(Animation) que o assistente irá realizar (você pode testar as demais animações...)

Simples ? É VBA...

Voce pode criar um efeito mais completo inserindo os balões de texto (aqueles das histórias em quadrinhos - Já leu gibi algum dia...). A seguir temos um exemplo :

Na procedure Quadrinhos fizemos o seguinte:

  • Definimos uma variável do tipo Balloon
  • Criamos um balloon vazio usando o método NewBallon
  • Definimos o título do balão -> Heading = " JcmSoft - Visual Basic "
  • A seguir criamos a mensagem usando a propriedade Text.
  • A última ação é tornar o balão visível - Show

Para terminar o assunto iremos usar alguns recursos para mostrar que isto não é apenas uma brincadeira. E se você esta pensando - "Aonde eu vou usar isto ? " , eu lhe dou algumas dicas: Um assistente, um Help diferenciado enfim esse pode ser aquele Ás guardado na manga que vai diferenciar a sua aplicação. Entendeu ? Bem vamos ao último exemplo. Nele agente irá solicitar a intervenção do usuário e conforme a sua escolha irá mostrar uma mensagem diferente.

Parte 1 - O agente mostra as opções e aguarda a ação do usuário.

Function backup()
     Dim balao As Balloon
     Dim texto As String
     Dim cabecalho As String
     Set balao = Assistant.NewBalloon
     With balao
        .Heading = "  Backup do sistema "
        .Text = " Selecione a opção "
        .Labels(1).Text = "Fazer backup agora."
        .Labels(2).Text = "Deixar para depois."
        .BalloonType = msoBalloonTypeButtons
        .Button = msoButtonSetNone
        backup = .Show
     End With
End Function
O codigo VBA O resultado do processamento

Aqui usamos a propriedade BalloonType para definir o tipo de balão com botões (msoBalloonTypeButtons) , e que mais nenhum botão adicional é usado ( .Button = msoButtonSetNone )

Parte 2 - Conforme a seleção do usuário o agente exibe uma mensagem diferente:

Sub mostra_selecao()
  Select Case backup()
  Case 1
   texto = "Muito Bem! Um homem previnido conserva o seu emprego"
   cabecalho = ""
  Case 2
   texto = "Quem nao faz backup um dia se arrepende ! "
   cabecalho = " Voce conhece a lei de Murphy ? "
  End Select
  With Assistant.NewBalloon
    .Heading = cabecalho
    .Text = texto
    .Mode = msoModeAutoDown
    .Show
   End With
End Sub
O código VBA O resultado

Neste código , conforme a seleção do usuário , as variáveis texto e cabeçalho são definidas e exibidas no balão . O modo de exibição msoModeAutoDown , faz com que o agente desapareça ao clicarmos fora de sua janela.

Para ver como usar os agentes leia o artigo - Usando os Agents da Microsoft no Visual Basic .

Até o próximo artigo... ;-)

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti