Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa Tarde ,
eu tenho uma aplicação que envia relatório automático,
agora eu preciso enviar relatórios diferentes para filial diferentes segue exemplo :
Gerente Filial 1 só pode receber o relatório com informações sobre a filial 1.
Gerente Filial 2 só pode receber o relatório com informações sobre a filial 2.
Alguém tem alguma ideia?
Desde já agradeço!
JH
João,tenho essa macro aqui, ela filtra de acordo com um campo (vc deveria escolher qual seria o mais apropriado), exporta para Excel (pode ser adaptado para gerar pdf) e envia para emails.
Talvez ajude
sub EnviaEmail
Dim objEmail
Const cdoSendUsingPort = 2
Const cdoAnonymous = 0
Const cdoBasic = 1
Const cdoNTLM = 2
'-------------------------------------------------------------------------------------------------------
'Configuração do servidor de e-mail
SMTPServer = "seu server"
Const SMTPPort = 25
Const SMTPTimeout = 60
Set objEmail = CreateObject("CDO.Message")
Set objConf = objEmail.Configuration
Set objFlds = objConf.Fields
With objFlds
'---------------------------------------------------------------------
' SMTP server details
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTPServer
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoAnonymous
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTPPort
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = SMTPTimeout
.Update
'---------------------------------------------------------------------
End With
'---------------------------------------------------------------------
strDate = Year(Date()) &"_"& month(date()) &"_"& Day(Date())
set SelOperacao = ActiveDocument.fields("CampoFiltro").GetPossibleValues
vOperacao = SelOperacao.Item(0).Text
objEmail.To = "email@dominio.com.br"
objEmail.From = "bi@dominio.com.br" 'Email Sender
objEmail.Subject = "Email Diario"
objEmail.TextBody = "Bom dia, segue anexo o relatório "_
& chr(13) & "Em caso de divergências nos dados, favor entrar em contato."_
& chr(13) & "Email automático do QlikView." 'Text Body
filepath="D:\tmp\\plan_" & vOperacao &"_"&strDate&".xls"
objEmail.AddAttachment filepath
'-------------------------------------------------------------------------------------------------------
objEmail.Send
Set objFlds = Nothing
Set objConf = Nothing
Set objEmail = Nothing
Set SelOperacao = Nothing
Set SelCargo = Nothing
end sub
Sub CriaXls
ActiveDocument.Sheets("SH03").Activate
set objExcel = ActiveDocument.GetSheetObject("CH01")
set SelOperacao = ActiveDocument.fields("CampoFiltro").GetPossibleValues
vOperacao = SelOperacao.Item(0).Text
strDate = Year(Date()) &"_"& month(date()) &"_"& Day(Date())
filepath="D:\tmp\\plan_" & vOperacao &"_"&strDate&".xls"
objExcel.ExportBiff filepath
ActiveDocument.GetApplication.WaitForIdle
set objExcel = Nothing
set SelOperacao = Nothing
set SelCargo = Nothing
End Sub
Sub Processa
set FldOperacao = ActiveDocument.Fields("CampoFiltro")
set SelOperacao = FldOperacao.GetPossibleValues
for i=0 to SelOperacao.Count-1
FldOperacao.Select SelOperacao.Item(i).text
GravaPDF
EnviaEmail
next
end Sub
O que você chama de "enviar automático"?
Um excel, pdf, etc?
Mandar por email?
Enviar quando? Após recarga?
Boa Tarde Clever,
eu envio um e-mail automático que em anexo um relatório em PDF, sim é depois da recarga!
qualquer outra duvida fico a disposição!
Att,
JH
Terás que fazer uma macro com o for que irá percorrer os valores das filiais e para cada laço ele enviará para o endereço correspondente.
Sim Raphael,
também tinha pensando algo dessa forma, mas queria ver uma boa forma de fazer ou que a comunidade já use.
Muito Obrigado pela ajuda!
João,tenho essa macro aqui, ela filtra de acordo com um campo (vc deveria escolher qual seria o mais apropriado), exporta para Excel (pode ser adaptado para gerar pdf) e envia para emails.
Talvez ajude
sub EnviaEmail
Dim objEmail
Const cdoSendUsingPort = 2
Const cdoAnonymous = 0
Const cdoBasic = 1
Const cdoNTLM = 2
'-------------------------------------------------------------------------------------------------------
'Configuração do servidor de e-mail
SMTPServer = "seu server"
Const SMTPPort = 25
Const SMTPTimeout = 60
Set objEmail = CreateObject("CDO.Message")
Set objConf = objEmail.Configuration
Set objFlds = objConf.Fields
With objFlds
'---------------------------------------------------------------------
' SMTP server details
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = cdoSendUsingPort
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = SMTPServer
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoAnonymous
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = SMTPPort
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = SMTPTimeout
.Update
'---------------------------------------------------------------------
End With
'---------------------------------------------------------------------
strDate = Year(Date()) &"_"& month(date()) &"_"& Day(Date())
set SelOperacao = ActiveDocument.fields("CampoFiltro").GetPossibleValues
vOperacao = SelOperacao.Item(0).Text
objEmail.To = "email@dominio.com.br"
objEmail.From = "bi@dominio.com.br" 'Email Sender
objEmail.Subject = "Email Diario"
objEmail.TextBody = "Bom dia, segue anexo o relatório "_
& chr(13) & "Em caso de divergências nos dados, favor entrar em contato."_
& chr(13) & "Email automático do QlikView." 'Text Body
filepath="D:\tmp\\plan_" & vOperacao &"_"&strDate&".xls"
objEmail.AddAttachment filepath
'-------------------------------------------------------------------------------------------------------
objEmail.Send
Set objFlds = Nothing
Set objConf = Nothing
Set objEmail = Nothing
Set SelOperacao = Nothing
Set SelCargo = Nothing
end sub
Sub CriaXls
ActiveDocument.Sheets("SH03").Activate
set objExcel = ActiveDocument.GetSheetObject("CH01")
set SelOperacao = ActiveDocument.fields("CampoFiltro").GetPossibleValues
vOperacao = SelOperacao.Item(0).Text
strDate = Year(Date()) &"_"& month(date()) &"_"& Day(Date())
filepath="D:\tmp\\plan_" & vOperacao &"_"&strDate&".xls"
objExcel.ExportBiff filepath
ActiveDocument.GetApplication.WaitForIdle
set objExcel = Nothing
set SelOperacao = Nothing
set SelCargo = Nothing
End Sub
Sub Processa
set FldOperacao = ActiveDocument.Fields("CampoFiltro")
set SelOperacao = FldOperacao.GetPossibleValues
for i=0 to SelOperacao.Count-1
FldOperacao.Select SelOperacao.Item(i).text
GravaPDF
EnviaEmail
next
end Sub
Postei um exemplo, caiu para a moderaçao, deve aparecer em pouco tempo
Obrigado Clever,
Irei adaptar para meu caso!
Muito Obrigado!
Qualquer duvida que eu tiver entro em contato com você!
Att,
JH
Boa tarde cleveranjos ,
estava implementando esse exemplo em um dos meus painéis, porem me deparei com o seguinte erro
na linha onde esta setado o comando para enviar o email: objEmail.Send - Linha 48
mostra o seguinte erro:
O caminho da pasta de escolha é necessário e não foi especificado.
testei diversos servidores diferentes, mas ainda sim continua a mostrar o erro.
Coloque sua macro aqui