FECHAR OUTLOOK
Caros colegas,
estou com uma aplicação access 2007 / VBA, que envia e-mail para o cliente. Até então a aplicação funciona beleza. Só que para a rotina funcionar, o Outlook não pode estar aberto, pois a rotina já faz a abertura.
Procurei em vários lugares, mas não encontrei nada além do código:
Set objmail = Outlook.Application.Quit
Mas quando vou rodar a aplicação dá a seguinte mensagem:
Erro de compilação:
Era esperado Function ou variável.
Alguém tem como me ajudar? Se alguém tiver uma rotina que envia e-mail e não faz validação se o Outlook está aberto ou não, também serve.
Obrigado e bom fim de semana a todos.
Namastê!
estou com uma aplicação access 2007 / VBA, que envia e-mail para o cliente. Até então a aplicação funciona beleza. Só que para a rotina funcionar, o Outlook não pode estar aberto, pois a rotina já faz a abertura.
Procurei em vários lugares, mas não encontrei nada além do código:
Set objmail = Outlook.Application.Quit
Mas quando vou rodar a aplicação dá a seguinte mensagem:
Erro de compilação:
Era esperado Function ou variável.
Alguém tem como me ajudar? Se alguém tiver uma rotina que envia e-mail e não faz validação se o Outlook está aberto ou não, também serve.
Obrigado e bom fim de semana a todos.
Namastê!
Caro colega Goodspeakers,
descobri que o erro era no Servidor Exchange... Foi só [Ô]ele[Ô] voltar a funcionar (mal e porcamente) que a rotina rodou normalmente.
Mas agora surgiu uma outra dúvida....
Eu estava dando uma olhada em alguns códigos e vi que não tem documentação para algumas coisas....
Por exemplo:
eu já consegui preencher todos os campos do Outlook.... pelo menos os da tela de dados (destinatario, CC, CCO, Assunto), até a prioridade eu consegui fazer.
Mas me falta dois importantes itens: Confirmação de Leitura e Confirmação de recebimento; Abaixo vai a rotina de envio do e-mail com anexo.
[ô]******************************************** ROTINA PARA ENVIO DE E-MAIL ********************************
[ô] Se o Outlook estiver aberto, fecha.
Set objAnexo = Nothing
Set objmail = Nothing
Set objOut = Nothing
Set objmail = Outlook.Application.Quit
[ô]------------------------------------------------------------
[ô]Ativa o outlook e o formulário de envio
[ô]------------------------------------------------------------
Set objOut = New Outlook.Application
Set objmail = objOut.CreateItem(olMailItem)
Set objAnexo = objmail.Attachments
[ô]------------------------------------------------------------------------------
[ô]Indico o nome do arquivo pdf e o local que será gravado.
[ô]------------------------------------------------------------------------------
strArquivo = [Ô]ListagemdeConferencia.pdf[Ô]
strLocal = [Ô]c::\Inadinplentes\[Ô]
[ô]----------------------------------------------------------------------------
[ô]Abre o relatório filtrado e oculto, de acordo com a proposta selecionada.
[ô]----------------------------------------------------------------------------
DoCmd.OpenReport stDocName, acViewPreview, , strSelecao, acHidden
[ô]----------------------------------------------------------------------------
[ô]Gera o pdf do relatório através do comando OutputTo.
[ô]O mecanismo do Access reconhece que o relatório solicitado pelo OutputTo
[ô]já está aberto e então o OutputTo usará o relatório já aberto e filtrado.
[ô]----------------------------------------------------------------------------
DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, strLocal & strArquivo
[ô]---------------------------------------------
[ô]Fecha o relatório que está oculto
[ô]---------------------------------------------
DoCmd.Close acReport, stDocName
[ô]-------------------------------------------------------------
[ô]Adiciona o arquivo pdf no anexo, capturado da pasta enviados
[ô]-------------------------------------------------------------
objAnexo.Add strLocal & strArquivo, olByValue, 1
[ô]---------------------------------------------------------------------------
[ô]Preenche o formulário de envio
[ô]fncLerArquivo - função que Lê o arquivo de origem e grava no corpo do email
[ô]fncLocalBd - função que captura o local do banco de dados
[ô]---------------------------------------------------------------------------
With objmail
.To = txtPara [ô]destinatário
.CC = Nz(txtCCopia, [Ô][Ô]) [ô]com cópia
.BCC = Nz(TxtCCOculta, [Ô][Ô]) [ô]Com cópia oculta
.BodyFormat = olFormatRichText [ô]Define o formato do corpo do e-mail como RichText
.HTMLBody = txtMensagem [ô]Define o a mensagem do texto
.Subject = Nz(txtAssunto) [ô]Define o texto do assunto
.Importance = 2 [ô]Define a prioridade como Alta
.ReadReceiptRequested [ô]Define Se o destinatario Leu a Mensagem
.ReceivedTime = 1 [ô]Define a Data e Hora do recebimento da mensagem
[ô]--------------------------------------------------------
[ô]Mostra o formulário de envio de email
[ô]--------------------------------------------------------
objmail.Display
.Send [ô]envia o email
End With
MsgBox [Ô]Mensagem enviada...[Ô], vbInformation, [Ô]Aviso[Ô]
[ô]-------------------------------------------------------
[ô]Tudo já foi entregue ao Outlook; então podemos esvaziar
[ô]a memória do computador usada pelas variáveis objeto.
[ô]-------------------------------------------------------
Set objAnexo = Nothing
Set objmail = Nothing
Set objOut = Nothing
descobri que o erro era no Servidor Exchange... Foi só [Ô]ele[Ô] voltar a funcionar (mal e porcamente) que a rotina rodou normalmente.
Mas agora surgiu uma outra dúvida....
Eu estava dando uma olhada em alguns códigos e vi que não tem documentação para algumas coisas....
Por exemplo:
eu já consegui preencher todos os campos do Outlook.... pelo menos os da tela de dados (destinatario, CC, CCO, Assunto), até a prioridade eu consegui fazer.
Mas me falta dois importantes itens: Confirmação de Leitura e Confirmação de recebimento; Abaixo vai a rotina de envio do e-mail com anexo.
[ô]******************************************** ROTINA PARA ENVIO DE E-MAIL ********************************
[ô] Se o Outlook estiver aberto, fecha.
Set objAnexo = Nothing
Set objmail = Nothing
Set objOut = Nothing
Set objmail = Outlook.Application.Quit
[ô]------------------------------------------------------------
[ô]Ativa o outlook e o formulário de envio
[ô]------------------------------------------------------------
Set objOut = New Outlook.Application
Set objmail = objOut.CreateItem(olMailItem)
Set objAnexo = objmail.Attachments
[ô]------------------------------------------------------------------------------
[ô]Indico o nome do arquivo pdf e o local que será gravado.
[ô]------------------------------------------------------------------------------
strArquivo = [Ô]ListagemdeConferencia.pdf[Ô]
strLocal = [Ô]c::\Inadinplentes\[Ô]
[ô]----------------------------------------------------------------------------
[ô]Abre o relatório filtrado e oculto, de acordo com a proposta selecionada.
[ô]----------------------------------------------------------------------------
DoCmd.OpenReport stDocName, acViewPreview, , strSelecao, acHidden
[ô]----------------------------------------------------------------------------
[ô]Gera o pdf do relatório através do comando OutputTo.
[ô]O mecanismo do Access reconhece que o relatório solicitado pelo OutputTo
[ô]já está aberto e então o OutputTo usará o relatório já aberto e filtrado.
[ô]----------------------------------------------------------------------------
DoCmd.OutputTo acOutputReport, stDocName, acFormatPDF, strLocal & strArquivo
[ô]---------------------------------------------
[ô]Fecha o relatório que está oculto
[ô]---------------------------------------------
DoCmd.Close acReport, stDocName
[ô]-------------------------------------------------------------
[ô]Adiciona o arquivo pdf no anexo, capturado da pasta enviados
[ô]-------------------------------------------------------------
objAnexo.Add strLocal & strArquivo, olByValue, 1
[ô]---------------------------------------------------------------------------
[ô]Preenche o formulário de envio
[ô]fncLerArquivo - função que Lê o arquivo de origem e grava no corpo do email
[ô]fncLocalBd - função que captura o local do banco de dados
[ô]---------------------------------------------------------------------------
With objmail
.To = txtPara [ô]destinatário
.CC = Nz(txtCCopia, [Ô][Ô]) [ô]com cópia
.BCC = Nz(TxtCCOculta, [Ô][Ô]) [ô]Com cópia oculta
.BodyFormat = olFormatRichText [ô]Define o formato do corpo do e-mail como RichText
.HTMLBody = txtMensagem [ô]Define o a mensagem do texto
.Subject = Nz(txtAssunto) [ô]Define o texto do assunto
.Importance = 2 [ô]Define a prioridade como Alta
.ReadReceiptRequested [ô]Define Se o destinatario Leu a Mensagem
.ReceivedTime = 1 [ô]Define a Data e Hora do recebimento da mensagem
[ô]--------------------------------------------------------
[ô]Mostra o formulário de envio de email
[ô]--------------------------------------------------------
objmail.Display
.Send [ô]envia o email
End With
MsgBox [Ô]Mensagem enviada...[Ô], vbInformation, [Ô]Aviso[Ô]
[ô]-------------------------------------------------------
[ô]Tudo já foi entregue ao Outlook; então podemos esvaziar
[ô]a memória do computador usada pelas variáveis objeto.
[ô]-------------------------------------------------------
Set objAnexo = Nothing
Set objmail = Nothing
Set objOut = Nothing
Tópico encerrado , respostas não são mais permitidas