Aqui está a função completa para gerar o relatório e enviar por email. Você pode fazer o envio ao abrir o aplicativo em um determinado dia, mas será necessário, alem de avaliar a data, tambem avaliar se o arquivo já existe, senão haverá a tentativa de cria-lo toda vez que abrir o bd no dia especificado. Esse código pode ser colocado no evento "Ao carregar" do formulário principal. Altere Email, servidor e mensagens para se adequar ao que você precisa. Acabei de implementar esse código agora. Não o testei ainda, mas acredito que deverá dar certo.
' variável que representa o mês corrente
Dim Mes As Integer
' se for o último dia do mês e o arquivo mês-ano.pdf ainda não existir, então...
If Day(Date) = Day(DateSerial(Year(Date), Mes + 1, 1) - 1) And Len(Dir(CurrentProject.Path & "\Relatórios\" & Format(now, "mm-yyyy") & ".pdf")) = 0 then
' cria o pdf na subpasta Relatórios com nome "mês-ano.pdf"
DoCmd.OutputTo acOutputReport, "NomeDoRelatório", "PDFFormat(*.pdf)", CurrentProject.Path & "\Relatórios\" & Format(now, "mm-yyyy") & ".pdf", False, "", 0, acExportQualityScreen
' cria as variáveis dos objetos cdo e envia o email
Dim Mens As Object
Dim Config As Object
Set Mens = CreateObject("CDO.Message")
Set Config = CreateObject("CDO.Configuration")
With Config
.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user@gmail.com"
.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "senha"
.Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
.Fields.Update
End With
Set Mens = New CDO.Message
With Mens
Set .Configuration = Config
.From = "Nome de quem envia"
.Sender = "email de quem envia"
.Subject = "Assunto da mensagem"
.HTMLBody = "Mensagem a ser enviada"
.To = "Email de destino"
' a linha abaixo pega o pdf criado e anexa à mensagem
.AddAttachment CurrentProject.Path & "\Relatórios\" & Format(now, "mm-yyyy") & ".pdf"
.Send
End With
MsgBox "Seus dados foram enviados com sucesso.", vbOKOnly + vbInformation, "Dados enviados"
Set Mens = Nothing
Set Config = Nothing
Else
Exit Sub
End If
Última edição por criquio em 6/5/2011, 03:38, editado 1 vez(es)