Access 2010 X Outlook 2013 e 2016

Moderador: Avelino Sampaio

EduBa
Mensagens: 12
Registrado em: 13 Mai 2016, 23:28

Access 2010 X Outlook 2013 e 2016

Mensagempor EduBa » 22 Set 2016, 16:03

Boa tarde

Tenho um aplicativo desenvolvido em Access 2010 ond envio emais automaticamente pelo Outlook.

Se o Outlook instalado na máquina do cliente dor o 2010 funciona, porem se foe o 2013 ou o 2016 não.

Não consigo referenciar a biblioteca do 2013 e 2016.

Como poderia fazer para resolver esse problema?

Tem como referencias o msoutl.olb em tempo de execução, identificando a versão instalada?

Agradeço desde já .

Eduardo

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


EduBa
Mensagens: 12
Registrado em: 13 Mai 2016, 23:28

Re: Access 2010 X Outlook 2013 e 2016

Mensagempor EduBa » 22 Set 2016, 19:11

Esqueci de dizer que estou rodando o aplicativo no runtime do access 2010.

Agradeço a ajuda

Eduardo

Avatar do usuário
Avelino Sampaio
Mensagens: 2160
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Access 2010 X Outlook 2013 e 2016

Mensagempor Avelino Sampaio » 22 Set 2016, 19:15

Eduardo,

tem como mostrar parte da programação utilizada ?

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

EduBa
Mensagens: 12
Registrado em: 13 Mai 2016, 23:28

Re: Access 2010 X Outlook 2013 e 2016

Mensagempor EduBa » 23 Set 2016, 02:12

Avelino

Utilizei a codificação que você disponibilizou no exemplo email_Outlook.

Fiz algumas adaptações para o meu aplicativo e ficou bom.

Quando fui testar no meu cliente, que tem o office 365 2016 instalado (sem o access no pacote), o sistema não localiza a referencia à biblioteca
do outlook.

Utilizei a mesma codificação que tinha no seu formulário, só eliminando algumas partes que não utilizarei.

Na minha máquina, com o office 2010 profecional, funciona certinho.

Eduardo

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Avatar do usuário
Avelino Sampaio
Mensagens: 2160
Registrado em: 04 Jun 2015, 18:27
Contato:

Re: Access 2010 X Outlook 2013 e 2016

Mensagempor Avelino Sampaio » 23 Set 2016, 11:20

Eduardo,

eu te pedi para ver uma parte do código para justamente observar como está referenciando as variáveis. Por exemplo, se estiver referenciando assim:

Código:
Dim objOut As Outlook.Application
Dim objMail As Outlook.MailItem
Dim objAnexo As Outlook.Attachments
...


Deverá trocar para:

Código:
Dim objOut As Object
Dim objMail As Object
Dim objAnexo As Object


Assim, não precisa referenciar o Outlook lá na lista de referências do VBA. Veja neste meu artigo, como utilizar as variáveis como Object

http://www.usandoaccess.com.br/tutoriais/gerar-relatorios-em-pdf-e-enviar-por-email.asp?id=1#inicio

Aguardamos
==================================================
Clique no link abaixo e veja um ótimo kit de ensino que tenho para você.
http://www.usandoaccess.com.br
==================================================

EduBa
Mensagens: 12
Registrado em: 13 Mai 2016, 23:28

Re: Access 2010 X Outlook 2013 e 2016

Mensagempor EduBa » 23 Set 2016, 14:03

Desculpa Avelino, como eu usei o seu exemplo, não sabia que havia outra maneira.

De qualquer vou analisar a sua dica, mas coloco aqui toda a rotina que utilizei.

Private Sub btEnviar_Click()

If IsNull(Me.Para) Or Me.Para = "" Then
MsgBox "Selecione o destinatário", , "Atenção"
Me.Para.SetFocus
Exit Sub
ElseIf IsNull(Me.Assunto) Or Me.Assunto = "" Then
MsgBox "Coloque o assunto", , "Atenção"
Me.Assunto.SetFocus
Exit Sub
ElseIf IsNull(Me.Mensagem) Or Me.Mensagem = "" Then
MsgBox "Entre com a Mensagem", , "Atenção"
Me.Mensagem.SetFocus
Exit Sub
End If


If IsNull(Me.CC) Then Me.CC = ""
If IsNull(Me.Cco) Then Me.Cco = ""

Dim objOut As Outlook.Application
Dim objMail As Outlook.MailItem
Dim objContas As Outlook.Accounts
Dim objAnexo As Outlook.Attachments
Dim strCaminho As String

On Error GoTo trataerro
'------------------------------------
'Cancela envio de email caso não haja
'o destinatário
'------------------------------------
If Len(Me!Para & "") = 0 Then
MsgBox "Entre com o emeail de destino...", vbInformation, "Aviso"
Me!Para.SetFocus
Exit Sub
End If
'------------------------------
'Ativa o outlook e o formulário
'de envio
'------------------------------
Set objOut = New Outlook.Application
Set objMail = objOut.CreateItem(olMailItem)
Set objAnexo = objMail.Attachments
'---------------------------------------------------------------------------
'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 = Me!Para 'destinastário
.CC = Nz(Me!CC, "") 'com cópia
.BCC = Nz(Me!Cco, "") 'Com cópia oculta
Select Case Me!TipoMensagem
Case 1 'Html
.BodyFormat = olFormatRichText
.HTMLBody = Me!Mensagem & IIf(Len(Me!txAssinatura & "") = 0, "", "<br><br>" & fncLerArquivo("\Lxs\assinaturas\" & Me!txAssinatura.Column(1)))
Case 2 ' Texto
.BodyFormat = olFormatPlain
.Body = Me!Mensagem & vbNewLine & vbNewLine & IIf(Len(Me!txAssinatura & "") = 0, "", fncLerArquivo("\Lxs\assinaturas\" & Me!txAssinatura.Column(1)))
Case 3 'Propagandas
If Len(Me!Lista.Column(1) & "") = 0 Then
MsgBox "Selecione a propaganda da lista...", vbInformation, "Aviso"
GoTo Sair
End If
.BodyFormat = olFormatHTML
.HTMLBody = fncLerArquivo(fncLocalBD & "\propagandas\" & Me!Lista.Column(1))
Case 4 'relatórios
Me!txAnexo.RowSource = ""
Select Case Me!QuadroFormato
Case 1 'pdf
strCaminho = fncLocalBD & "\enviados\" & Me!Lista & ".pdf"
DoCmd.OutputTo acOutputReport, Me!Lista.Column(1), acFormatPDF, strCaminho, 0
Case 2 'snp
strCaminho = fncLocalBD & "\enviados\" & Me!Lista & ".snp"
DoCmd.OutputTo acOutputReport, Me!Lista.Column(1), acFormatSNP, strCaminho, 0
Case 3 'html
strCaminho = fncLocalBD & "\enviados\" & Me!Lista & ".htm"
DoCmd.OutputTo acOutputReport, Me!Lista.Column(1), acFormatHTML, strCaminho, 0
Case 4 'rtf
strCaminho = fncLocalBD & "\enviados\" & Me!Lista & ".rtf" '
DoCmd.OutputTo acOutputReport, Me!Lista.Column(1), acFormatRTF, strCaminho, 0
Case 5 'Xls
strCaminho = fncLocalBD & "\enviados\" & Me!Lista & ".xls"
DoCmd.OutputTo acOutputReport, Me!Lista.Column(1), acFormatXLS, strCaminho, 0
End Select
Select Case Me!QuadroFormato
Case 1, 2, 4, 5
Me!txAnexo.AddItem strCaminho & ";" & Me!Lista, 0
.BodyFormat = olFormatPlain
.Body = "Segue lista anexa"
Case 3 ' html no corpo do email
.BodyFormat = olFormatHTML
.HTMLBody = fncLerArquivo(strCaminho)
End Select
End Select
.Subject = Nz(Me!Assunto, "LeXacom") 'assunto
'---------------------------------
'Adicionando os anexos
'---------------------------------
For j = 1 To Me!txAnexo.ListCount
objAnexo.Add Me!txAnexo.Column(0, j - 1), olByValue, 1, Me!txAnexo.Column(1, j - 1)
Next
'--------------------------------------------------------
'Altera conta de envio conforme seleção do controle conta
'---------------------------------------------------------
.SendUsingAccount = objOut.Session.Accounts(Me!txContas.Value) 'seleciona a conta que enviará o email
.Display 'exibe o formulário de email
'.Send 'envia o email
End With
MsgBox "Mensagem enviada...", vbInformation, "Aviso"

Sair:
'------------------------
'Limpa a memória
'------------------------
Set objAnexo = Nothing
Set objMail = Nothing
Set objOut = Nothing

Dim CTL As control

For Each CTL In Controls
If TypeOf CTL Is TextBox Or TypeOf CTL Is ComboBox Then CTL = ""
Next CTL

Exit Sub

trataerro:
Select Case Err.Number
Case 2487
MsgBox "Selecione o relatório da lista...", vbInformation, "Aviso"
Case 2282
MsgBox "Os formatos PDF e XLS não estão disponíveis." & Chr(10) & Chr(13) & Chr(10) & Chr(13) & _
"Atualize o office com o pacote SP2...", vbInformation, "Aviso"
Case Else
MsgBox Err.Number & vbCrLf & Err.Description
End Select
Resume Sair:
End Sub

Eduardo

EduBa
Mensagens: 12
Registrado em: 13 Mai 2016, 23:28

Re: Access 2010 X Outlook 2013 e 2016

Mensagempor EduBa » 27 Set 2016, 13:03

Bom dia Avelino.

Conforme vossa recomendação, alterei o código para gerar o email no outlook conforme os exemplos e funcionou perfeitamente para emal com texto não formatado.

Porem a funcionalidade para gerar o email em HTML (rich text) dá erro e não gera.

Conforme póst anterior, mostro o código utilizando a biblioteca referenciada, e todas as opções de envio funcionam perfeitas.

É possível ter a funcionalidade de emvio em rich text (HTML) no código que você sugeriu?

Eduardo

xelapan
Mensagens: 1
Registrado em: 15 Jan 2017, 18:31

Re: Access 2010 X Outlook 2013 e 2016

Mensagempor xelapan » 15 Jan 2017, 18:33

:D Eu tenho o mesmo problema. Eu encontrei a seguinte informação:

Microsoft Access 2010 fornece principalmente três maneiras de compartilhar dados de contato com o Microsoft Outlook 2010:

tabela vinculada para estabelecer uma conexão entre um banco de dados em Access 2010 e pasta Outlook 2010, criar uma tabela ligada no Access usando a pasta como uma fonte de dados. As alterações de dados são refletidas no Access Outlook.

IMPORTANTE: Erros podem ocorrer se a pasta de dados do Outlook é atualizado em uma tabela vinculada no Access. Consulte o administrador de e-mail antes de tentar modificar os dados do Outlook através do Acesso.

Importação de dados Para usar o Outlook no Access quando você não precisa de mudanças subseqüentes são refletidas dados do Outlook no Access, importar dados do Outlook para o acesso.

Exportação Para usar dados do Access no Outlook quando não é necessário que as mudanças subsequentes de acesso a dados será refletido no Outlook, exportar os dados de acesso a um arquivo de texto e, em seguida, importar os dados do arquivo de texto para o Outlook.

blaguna
Mensagens: 2
Registrado em: 03 Abr 2017, 13:11

Re: Access 2010 X Outlook 2013 e 2016

Mensagempor blaguna » 03 Abr 2017, 13:17

Que tal

Yo lo resolvi de esta manera al salir desactivo la referencia y al entrar a la aplicación activo las dos ya sea para 2016 o 2013, y activara una de acuerdo a la versión, pero la aplicacion la mando sin compilar es decir no es ACCDE.
es una solucion rapida, puesto que mi aplicacion aun esta en diseño, la verdad no se como le hare para compilarla una vez que termine.

Sub refOutlookRemove()
'quita la referencia 2016
Dim ref As Reference
On Error Resume Next
Set ref = References("Outlook")
References.Remove ref
End Sub

Sub refOutlookAdd()
On Error Resume Next
Dim ref As Reference
'pone la referencia 2016
Set ref = References.AddFromFile("C:\Program Files (x86)\Microsoft Office\root\Office16\MSOUTL.OLB")
'pone la referencia 2013
Set ref = References.AddFromFile("C:\Program Files\Microsoft Office\Office15\MSOUTL.OLB")
End Sub

blaguna
Mensagens: 2
Registrado em: 03 Abr 2017, 13:11

Re: Access 2010 X Outlook 2013 e 2016

Mensagempor blaguna » 03 Abr 2017, 13:21

una solución que se me ocurrió ahorita no se si se pueda, es guardar el código en alguna tabla y llamarla mediante código y ejecutara, lo que nos permitirá compilar y hacer ACCDE.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Access x Outlook”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 1 visitante