Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Envio de Email com filtros diferentes.

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

1 Solution

Accepted Solutions
Clever_Anjos
Employee
Employee

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

View solution in original post

10 Replies
Clever_Anjos
Employee
Employee

O que você chama de "enviar automático"?

Um excel, pdf, etc?

Mandar por email?

Enviar quando? Após recarga?

Not applicable
Author

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

rphpacheco
Creator III
Creator III

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.

Not applicable
Author

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!

Clever_Anjos
Employee
Employee

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

Clever_Anjos
Employee
Employee

Postei um exemplo, caiu para a moderaçao, deve aparecer em pouco tempo

Not applicable
Author

Obrigado Clever,

Irei adaptar para meu caso!

Muito Obrigado!

Qualquer duvida que eu tiver entro em contato com você!

Att,

JH

israelcsouza
Contributor III
Contributor III

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.

Clever_Anjos
Employee
Employee

Coloque sua macro aqui