Boa tarde,
estou com problemas no envio de e-mail:
este código foi adaptado para a minha realidade; em outra aplicação funciona perfeitamente só que nessa ele está dando o erro de erro de definição de aplicativo ou de definição de objeto na hora que vai definir o destinatário no to: e no cc: como resolver o problema, pois é feito o recorset na consulta ConsMailFrequenciaJul que existe o campo EmailServidor, tem hora que funciona perfeitamente e tem hora de dá o erro descrito acima.
Private Sub Form_Open(Cancel As Integer)
'Tratamento de erro
On Error GoTo ErrHandle
Dim objOutlookMsg As Outlook.MailItem
Dim RsEmails As DAO.Recordset
Dim Q As String
Dim Mes As String
Dim VarMes As Integer
Dim Ano As String
Dim texto1 As String
Dim texto2 As String
'Define a quebra de linha
Q = Chr(13) & Chr(10)
Mes = Me.Mes
Ano = Me.Ano
Select Case Me.Mes
Case 1
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaJan")
Case 2
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaFev")
Case 3
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaMar")
Case 4
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaAbr")
Case 5
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaMai")
Case 6
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaJun")
Case 7
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaJul")
Case 8
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaAgo")
Case 9
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaSet")
Case 10
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaOut")
Case 11
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaNov")
Case 12
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaDez")
End Select
'Inicia o Outlook
Call InitializeOutlook
'Laço para ir de registro em registro, enviando um email para todos os destinatários da consulta
While Not RsEmails.EOF
If RsEmails.Fields("EmailServidor") <> "" Then
'Cria um novo objeto de email
Set objNewMail = gOLApp.CreateItem(olMailItem)
'Define as propriedades de envio do email
With objNewMail
'Define o destinatário
.To = RsEmails.Fields("EmailServidor")
.CC = "danilo.silva@cultura.gov.br"
'Define o corpo do email
.Body = "Prezado(a) Servidor(a)," & Q & "" & _
Q & " Informamos que até o momento não acusamos o recebimento da sua folha de frequência do mês " & Mes & "/" & Ano & ". Favor regularizar a situação imediatamente, considerando que a percepção da remuneração está condicionada à comprovação do cumprimento da devida jornada de trabalho. " & _
Q & " Ressaltamos que, conforme disposto no art. 8º do Decreto nº 1.590, de 10 de agosto de 1995, que trata da jornada de trabalho dos servidores da Administração Pública Federal direta, das autarquias e das fundações públicas federais, utilizado por extensão aos contratados de forma temporária, que " & "A frequência do mês deverá ser encaminhada às unidades de recursos humanos do respectivo órgão ou entidade até o quinto dia útil dos mês subsequente, contendo as informações das ocorrências verificadas." & _
Q & " Atenciosamente," & Q & "" & Q & " Coordenação-Geral de Gestão de Pessoas - COGEP " & Q & " Subsecretaria de Planejamento, Orçamento e Administração - SPOA " & Q & " Secretaria-Executiva - SE " & Q & " Ministério da Cultura - MinC"
'Título do email
.Subject = "Registro de frequência - Folha(s) de ponto pendente(s)."
'Envia o email
.Send
End With
'Tira o objeto da memória
Set objNewMail = Nothing
CurrentDb.Execute "INSERT INTO TBFrequenciaEmailEnviado (IDCadastro_Servidor, Ano, Mes, DTEnvio) " & _
Q & " VALUES (" & RsEmails.Fields("IDCadastro_Servidor") & "," & Me.Ano & "," & Me.Mes & ", #" & Format(Me.DTEnvio, "mm/dd/yyyy hh:mm:ss") & "#);"
Else
End If
'Move para o próximo email
RsEmails.MoveNext
Wend
'Tira o recordset da memória
Set RsEmails = Nothing
Me.TimerInterval = 0
ErrHandle:
'Caso ocorra um erro
If Err.Number <> 0 Then
MsgBox Err.Description, vbInformation, "Erro número: " & Err.Number
End If
estou com problemas no envio de e-mail:
este código foi adaptado para a minha realidade; em outra aplicação funciona perfeitamente só que nessa ele está dando o erro de erro de definição de aplicativo ou de definição de objeto na hora que vai definir o destinatário no to: e no cc: como resolver o problema, pois é feito o recorset na consulta ConsMailFrequenciaJul que existe o campo EmailServidor, tem hora que funciona perfeitamente e tem hora de dá o erro descrito acima.
Private Sub Form_Open(Cancel As Integer)
'Tratamento de erro
On Error GoTo ErrHandle
Dim objOutlookMsg As Outlook.MailItem
Dim RsEmails As DAO.Recordset
Dim Q As String
Dim Mes As String
Dim VarMes As Integer
Dim Ano As String
Dim texto1 As String
Dim texto2 As String
'Define a quebra de linha
Q = Chr(13) & Chr(10)
Mes = Me.Mes
Ano = Me.Ano
Select Case Me.Mes
Case 1
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaJan")
Case 2
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaFev")
Case 3
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaMar")
Case 4
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaAbr")
Case 5
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaMai")
Case 6
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaJun")
Case 7
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaJul")
Case 8
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaAgo")
Case 9
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaSet")
Case 10
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaOut")
Case 11
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaNov")
Case 12
'Abre um recordset
Set RsEmails = CurrentDb.OpenRecordset("ConsMailFrequenciaDez")
End Select
'Inicia o Outlook
Call InitializeOutlook
'Laço para ir de registro em registro, enviando um email para todos os destinatários da consulta
While Not RsEmails.EOF
If RsEmails.Fields("EmailServidor") <> "" Then
'Cria um novo objeto de email
Set objNewMail = gOLApp.CreateItem(olMailItem)
'Define as propriedades de envio do email
With objNewMail
'Define o destinatário
.To = RsEmails.Fields("EmailServidor")
.CC = "danilo.silva@cultura.gov.br"
'Define o corpo do email
.Body = "Prezado(a) Servidor(a)," & Q & "" & _
Q & " Informamos que até o momento não acusamos o recebimento da sua folha de frequência do mês " & Mes & "/" & Ano & ". Favor regularizar a situação imediatamente, considerando que a percepção da remuneração está condicionada à comprovação do cumprimento da devida jornada de trabalho. " & _
Q & " Ressaltamos que, conforme disposto no art. 8º do Decreto nº 1.590, de 10 de agosto de 1995, que trata da jornada de trabalho dos servidores da Administração Pública Federal direta, das autarquias e das fundações públicas federais, utilizado por extensão aos contratados de forma temporária, que " & "A frequência do mês deverá ser encaminhada às unidades de recursos humanos do respectivo órgão ou entidade até o quinto dia útil dos mês subsequente, contendo as informações das ocorrências verificadas." & _
Q & " Atenciosamente," & Q & "" & Q & " Coordenação-Geral de Gestão de Pessoas - COGEP " & Q & " Subsecretaria de Planejamento, Orçamento e Administração - SPOA " & Q & " Secretaria-Executiva - SE " & Q & " Ministério da Cultura - MinC"
'Título do email
.Subject = "Registro de frequência - Folha(s) de ponto pendente(s)."
'Envia o email
.Send
End With
'Tira o objeto da memória
Set objNewMail = Nothing
CurrentDb.Execute "INSERT INTO TBFrequenciaEmailEnviado (IDCadastro_Servidor, Ano, Mes, DTEnvio) " & _
Q & " VALUES (" & RsEmails.Fields("IDCadastro_Servidor") & "," & Me.Ano & "," & Me.Mes & ", #" & Format(Me.DTEnvio, "mm/dd/yyyy hh:mm:ss") & "#);"
Else
End If
'Move para o próximo email
RsEmails.MoveNext
Wend
'Tira o recordset da memória
Set RsEmails = Nothing
Me.TimerInterval = 0
ErrHandle:
'Caso ocorra um erro
If Err.Number <> 0 Then
MsgBox Err.Description, vbInformation, "Erro número: " & Err.Number
End If