AS EMPRESAS ESTÃO "DESESPERADAS" POR ESTE TIPO DE PROFISSIONAL... - VOCÊ É UM DELES?
MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI - O Conhecimento que Vira Dinheiro - CLIQUE AQUI
| « Anterior | Δ Página principal | ¤ Índice | Próxima » |
| Integrando o Office ao Excel 2003 Utilizando VBA Autor: Robert Friedrick Martim |
|||
|---|---|---|---|
| Lição 05 de 05 - Integrando o Outlook ao Access | |||
Em termos de VBA o Outlook é bem diferente dos outros aplicativos. O Outlook trabalha apenas com um projeto chamado VbaProject.OTM. Este arquivo, geralmente, encontra-se na pasta Drive:\Documents and Settings\Usuário\Dados de aplicativos\Microsoft\Outlook. Contudo, se ele não estiver presente em seu computador isso significa que você jamais criou um projeto VBA no Outlook, pois o arquivo somente é gerado quando um projeto é iniciado. Este projeto é “standalone” e é para ser rodado em uma máquina apenas. Então, se você pretende utilizá-lo no seu trabalho lembre-se de alguns pontos:
Caso você não crie um certificado digital para o projeto (ou modifique o nível de segurança de macros para baixo), sempre que o Outlook for aberto a seguinte mensagem será mostrada:
Se o usuário desabilitar as macros o seu monitoramento de e-mails falhará. A figura abaixo mostra o certificado aplicado a este projeto:
Este é um “auto certificado” criado na própria máquina local:
O certificado pode ser criado utilizando a ferramenta de criação de certificados para projetos VBA do Office. Uma outra questão diz repeito aos objetos do Outlook. Aqui, utilizo o Redemption para evitar as mensagens de segurança:
A mensagem aparecerá independentemente de estarmos codificando dentro do Outlook ou não. A segunda questão diz respeito ao “deployment” (distribuição) do aplicativo. Este tipo de projeto precisa ser distribuído um a um para cada máquina. Diferentemente do Excel e Word onde nós podemos distribuir AddIns (Suplementos) no Outlook não podemos fazê-lo utilizando o projeto VBA nele criado. O projeto deste tópico contém os seguintes itens:
O banco de dados contém o básico para manter um controle dos e-mails. A idéia do controle é saber o que é enviado e recebido pelo usuário. O corpo da mensagem e informações sobre a mensagem são gravadas no banco de dados e as informações podem, subsequentemente, ser recuperados para saber que tipos de mensagens são recebidas e enviadas pelo usuário. Monitorando chegada e enviando de e-mailsAntes de mais nada, precisamos criar nosso banco de dados. O BD do exemplo é composto por duas tabelas. Uma tabela para gravar os dados e uma tabela de ações:
A tabela acima mostra algumas das ações possíveis e sugeridas. Não cobrirei todas as ações, pois o objetivo deste curso não é desenvolver o aplicativo completo, mas desenvolver a idéia e deixar que o leitor desenvolva em cima das sugestões dadas. As tabelas são relacionadas para facilitar a criação de relatórios. Por exemplo, você poderia criar um relatório de mensagens enviadas e/ou recebidas, etc. No código de exemplo, o BD está sob a raiz do diretório C e o nome dele é “outlooklog.mdb”. Para este exemplo, precisaremos de um módulo de classe e um módulo VBA. Adicione estes dois módulos em seu projeto no Outlook. Abaixo quebro o código em Classe e Módulo com a explicação dentro de cada um. Antes de mais nada, abra o VBE do ThisOutlookSession onde as seguinte linhas de código devem ser entradas: Private Sub Application_Startup() Call IniciarClasses End Sub O código acima chama a rotina IniciarClasses que criaremos mais adiante. Este rotina por sua vez iniciará a classe que criaremos e a qual controlará os eventos de chegada e envio de e-mails. Adicione um módulo VBA onde o seguinte código deve ser inserido: Sub IniciarClasses() On Error Resume Next ' Iniciar as classes olClsItens.Initialize_handler olClsOL.Initialize_handler End Sub O código de Inicialização é bastante simples e não há muito que explicar. Observe, porém, que estamos iniciando duas classes neste mesmo código. A classe olClsItens é a classe que desenvolveremos no exemplo do próximo tópico. Adicione agora um módulo de classe e chame de olClsOL. Neste classe adicionaremos o código: ' Define os eventos do aplicativo para monitoração ' Inicialização do evento da classe ' Evento de envio de e-mail ' Em caso de erro ir para o Error_Handler ' Define o email como sendo o item passado ' Chama a rotina para processar o email Limpar: ' Passa uma mensagem de erro para o usuário. ' Evento de recebimento de email ' Posição inicial da strEntryID ' Comprimento do ID de entrada da mensagem ' remove o ID da mensagem ' Define a mensagem a partir da ID da mensagem ' Chama a rotina de processamento do email que acabou de chegar ' Limpa a memória ' Passa uma mensagem de erro para o usuário. ' Rotina para processar o email ' Declara as variáveis do BD ' Cria um novo objeto safemail ' Define o objeto safemail como sendo o e-mail ' Com o recordset ' Define a string de conexão do recordset ' Define a tabela fonte ' Define o tipo de cursor ' Define a posição do cursor ' Define o tipo de "Lock" (travamento) de registro ' Abre o recordset ' Seleciona o tipo de ação passada para processamento ' Limpa os objetos da memória Error_Handler: Case_Else: ' Rotina de erros MsgBox "Um erro ocorreu. Favor reportar erro em '" & chamadoPor & "' para o administrador" _ É provável que o leitor esteja questionando os motivos para utilizar 1 e 5 na instrução Select Case. O código original que desenvolvi possui outras opções, contudo, neste módulo apenas apresento parte do código. Uma outra questão importante diz respeito aos erros. Aqui, apresento um tratamento o qual passa a seguinte mensagem para o usuário:
Não obstante, se o leitor realmente deseja que o usuário não saiba o que está ocorrendo ou não queira intervenção do usuário, o erro acima pode ser suprimido e/ou substituído por uma rotina que envia um email para o administrador avisando sobre o erro ocorrido. Uma vez que o código esteja rodando os emails recebidos e enviados serão gravados na banco de dados. A figura abaixo mostra parte dos mais de 800 emails monitorados em minha máquina (somente recebimentos):
O proximo exemplo lida com deleção de e-mails. Monitorando deleção de e-mailsEste exemplo é uma continuação do exemplo anterior. Aqui mostrarei como criar o evento para controlar itens enviados para a caixa de itens removidos. O banco de dados continuará o mesmo e utilizaremos uma nova classe a qual deve ser chamada de clsItens. Com a classe criada estamos prontos para iniciar o nosso código. Não há muita diferença entre este exemplo e o anterior, excluindo a forma como os itens são manipulados na caixa de itens removidos: 'Eventos para o DeletedItems Dim OlApp2 As New Outlook.Application Public Sub Initialize_handler() End Sub 'Evento ItemAdd para a pasta DeletedItems ' Em caso de erro ir para o Error_Handler Private Sub olfldDeleted_ItemChange(ByVal Item As Object) ' Rotina para processar o email ' Declara as variáveis do BD ' Define o objeto safemail como sendo o e-mail ' Cria um novo recordset ' Com o recordset ' Define a string de conexão do recordset ' Define a tabela fonte ' Define o tipo de cursor ' Define a posição do cursor ' Define o tipo de "Lock" (travamento) de registro ' Abre o recordset Case 9 Case Else Error_Handler: Case_Else: End Sub Private Sub erros(ByVal número As Long, ByVal descricao As String, _ MsgBox "Um erro ocorreu. Favor reportar erro em '" & chamadoPor & "' para o administrador" _ O BD para exemplo que acompanha este modulo possui o nome deste tópico para fácil referência. Modifique o nome para outlooklog.mdb e coloque-o em C:\. Veja algumas das opções do banco de dados. |
|||
| « Anterior | Δ Página principal | ¤ Índice | Próxima » |
|
Quer Aprender VBA no
Excel, Sem Dificuldades, com Exemplos |
||
|
Junto com o livro você Recebe 11 Bônus Incluindo 50 horas de Vídeo Aulas. |
||
|
Mesmo que Você não Saiba Nada de
Programação VBA ou já Tenha Tentado |
||
|
|
MEGA FORMAÇÃO EM INFRAESTRUTURA DE TI (Online, Vitalício, Prático e Atualizado)! |
|
|
NÃO PROCURE VAGAS, SEJA PROCURADO! |
|
Para Todos os Detalhes, Acesse:
https://juliobattisti.com.br/curso-infra-ti.asp
|
Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434
Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208
Todos os direitos reservados, Júlio Battisti 2001-2026 ®
LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO
DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI