Como saber se o Outlook está instalado e aberto?
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
O Outlook pode ser manipulado programaticamente pelo Access, mas para isso é necessário que o Access passe a ter acesso aos métodos e propriedades do Outlook. Esses métodos e propriedades ficam disponíveis ao selecionarmos o Outlook na lista de referências do VBA ou quando o referenciamos como um objeto, diretamente nas linhas de código. Em ambas as formas referenciadas, ocorrerá erro no procedimento de envio de email se o Outlook não estiver instalado. Então é preciso tratar esta questão na programação.
As técnicas de programação aqui apresentadas são para o caso do Outlook referenciado como um objeto.
Observe a função abaixo que verifica se o Outlook está instalado. A palavra chave Nothing, que representa o estado NÃO inicializado de uma variável de objeto, é que nos permite identificar se o Outlook está ou não presente.
Esta função deverá ser copiada para um módulo global.
Faça o login aqui para ter acesso ao código.
Observe no código abaixo a chamada da função fncOutlookInstalado(), que informa se o Access está instalado antes de iniciar o processo de envio do email.
Faça o login aqui para ter acesso ao código.
A próxima questão a ser tratada, que também acarreta em erro, é a obrigatoriedade do Outlook estar aberto para o envio do email.
Veja abaixo a função que verifica se o Outlook se encontra aberto. Observe que também é usada a palavra chave Nothing para analisar se o Outlook foi carregado na variável objeto.
Esta função deverá ser copiada para um módulo global.
Faça o login aqui para ter acesso ao código.
Veja o procedimento completo com os testes iniciais do Outlook.
Faça o login aqui para ter acesso ao código.
Segue um exemplo com o código apresentado. Como teste, feche o Outlook e tente enviar um email por este arquivo exemplo.
Bom estudo!
11 comentário(s) Diego 04/03/2022 22:59:33 Ops, esqueci de comentar, só acontece isso se meu outlook estiver aberto, caso esteja fechado abre no momento e show, mas dai envia e fecha a janela, tenho que abri lo pelo executável oulook pra completar o envio do email, pq não sai da caixa de saída se não estiver aberto. Diego 04/03/2022 22:57:25 Baixei o teu banco de dados demonstração e a mensagem é que outlook não está instalado, uso outlook 2013 e access 2013 Desde já obrigado pela atenção Diego 04/03/2022 22:41:41 Quando inseri o cod abaixo apareceu "erro de copilação, variável não definida" e 'fncOutlookInstalado' selecionado If fncOutlookInstalado = False Then MsgBox "O Outlook não está instalado...", vbInformation, "Aviso" Exit Sub Else If fncOutlookAberto = False Then 'Ou se gera uma mensagem para o usuário, que o Outlook tem que ser aberto. 'Msgbox "Mantenha o Outlook aberto para ser possível o envio do email..." 'Exit sub 'ou force a abertura do Outlook. 'Call Shell("Outlook.exe", vbMinimizedNoFocus) End If End If Avelino Sampaio 16/07/2021 08:06:51 Eduardo, Copie a o procedimento abaixo para um módulo global: Public Sub fncCarregaTeclado() Dim objws As Object Set objws = CreateObject("wscript.shell") objws.Run "c:\windows\system32\osk.exe", 5, "false" End Sub Basta executar o procedimento em qualquer local do seu código: call fncCarregaTeclado Sucesso! EDUARDO ROCHA 13/07/2021 12:17:45 Professor, uma curiosidade: não consigo exectar o OSK.EXE com a funçao SHELL. e preciso muito disso pois sou deficiente fisico e me ajudaria muito se eu pudesse acionar o Teclado Virtual atraves de um botão. Julia 14/04/2021 12:44:42 ** Quando aparece a mensagem: "A acão SendObject foi cancelada." Simplesmente trava o access, a ponto de eu ter que fechá-lo no gerenciador de tarefas d Windows. Obrigado. Julia Julia 14/04/2021 12:42:37 Avelino, Por alguns problemas, passei a usar esse código em uma Ribbon, só que quando cancelo o envio do envio aparece a seguinte mensagem: A acão SendObject foi cancelada. Código ao clicar em um botão de uma Ribbon: Case "btOutlook" On Error Resume Next Dim objOut As Object Const olMailItem = 0 '-------------------------------------------------------------- 'Esta é a parte que testa se o Outlook está instalado e aberto '-------------------------------------------------------------- If fncOutlookInstalado = False Then MsgBox "O Outlook não está instalado...", vbInformation, "Aviso" Exit Sub Else If fncOutlookAberto = False Then MsgBox "Mantenha o Outlook aberto para ser possível o envio do email...", vbInformation, "Aviso" Exit Sub End If End If '-------------------------------------------------------- 'Abrir o email - "Escrever a mensagem": '-------------------------------------------------------- DoCmd.SendObject Set objOut = Nothing Avelino Sampaio 14/06/2020 10:14:53 Paulo Ferreira, Alem da dica do meu amigo Marcio Melo, sugiro você baixar os modelos do próprio Access, que vem com diversos tipos de cadastros. Marcio Melo - RJ 13/06/2020 15:20:36 Adorei... já utilizo o seu form de enviar e-mail que é nota 10, realmente todos na empresa perceberam na prática que os e-mail são enviados com o Outlook aberto ou quando é aberto, e outra se não instalado dava um erro, ai tive que depurar na época na rotina onde deu o erro, informando que era devido ao outlook não estar instalado, ou seja, feito essa informação na "marra", agora com essas novas dicas irei imprementar a correta depuração que é identificar tudo antes que aconteça, vi que agora posso até escolher em abrir ou não o outlook, ou apresentar uma mensagem sobre esse detalhe, muito show. Gostei muito e vou tentar fazer essas mesmas analogias para o PDF e Windows Media que também depurei de maneira errônea. O conhecimento aberto a todos... Dica para o Sr. Paulo Ferreira Pantoja, estude todas as vídeo aulas aqui disponibilizadas, utilize o Maestro + Monta Ribbons como seu inicial. O controle de pessoal que você deseja, verás que é um mínino em relação ao vasto conhecimento que esta disponibilizado aqui... procure entender Tabelas/campos x Relacionamentos. Sou mais Brasil! Paulo Kazumiti Todoroki 13/06/2020 11:31:12 Muito útil esta dica e como utilizo constantemente a dupla Access X Outlook, certamente já ficará nos meus favoritos! Paulo Ferreira Pantoja 13/06/2020 09:56:14 obrigado, mais eu to precisando de videos que se possivel me mostre os passos para montar um banco de dados para funcionarios no setor de cadastro, por farvor, obrigado. |