0 Replies Latest reply: Mar 29, 2013 4:59 AM by Remi HUSSON RSS

    Impression avec une macro

      Bonjour,

       

      J'utilise cette macro pour imprimer et envoyer par email mon rapport :

       

      Sub Dagrapport

       

       

      Set WSHNetwork = CreateObject("WScript.Network")

       

      WSHNetwork.SetDefaultPrinter "QlikViewPDF"

       

      vReport = "RP01" 'Set report

       

      vName = "Test " 'Name of output pdf

       

      ActiveDocument.PrintReport(vReport), "QlikViewPDF", false 'Printreport

       

      reportFile = "c:\temp\" & vName &".pdf" 'Setting outputname

       

      printReportPDF vReport,reportFile

       

      ActiveDocument.GetApplication.Sleep 5000

       

      zendDagrapport reportFile

       

      End sub

       

      '===========================================================================

       

      FUNCTION printReportPDF(reportID, pdfOutputFile)

       

          Set WSHShell = CreateObject("WScript.Shell")

       

           WSHShell.RegWrite "HKCU\Software\QlikViewPDF\OutputFile", pdfOutputFile, "REG_SZ"

       

           WSHShell.RegWrite "HKCU\Software\QlikViewPDF\BypassSaveAs", "1", "REG_SZ"

       

          ActiveDocument.PrintDocReport reportID

       

          set WSHShell = nothing  

       

      END FUNCTION

       

      '===========================================================================

       

      function zendDagrapport(PDFOutputFile)

       

      Dim objEmail

       

      Const cdoSendUsingPort = 2 ' Send the message using SMTP

       

      Const cdoAnonymous = 0 'Do not authenticate

       

      Const cdoBasic = 1 'basic (clear-text) authentication

       

      Const cdoNTLM = 2 'NTLM

       

      SMTPServer = "smtp.X.X.com"

       

      Const SMTPPort = 25 ' Port number for SMTP

       

      Const SMTPTimeout = 60 ' Timeout for SMTP in seconds

       

      'Sending mail

       

      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

       

       

      MailResponsable = ActiveDocument.GetVariable("vemail_agence").GetContent.String

       

      objEmail.To = MailResponsable 'Email Recipient

       

      objEmail.From = "monmail@aaaaa.fr" 'Email Sender

       

      objEmail.Subject = "Rapport X" ' Subject

       

      objEmail.TextBody = "Bonjour, Vous trouverez ci-joint votre rapport d'activité X. Cordialement, L'équipe Marketing X." 'Text Body

       

      objEmail.AddAttachment PDFOutputFile ' Attachement

       

      objEmail.Send

       

      Set objFlds = Nothing

       

      Set objConf = Nothing

       

      Set objEmail = Nothing

       

      msgbox ("Test Mail Sent")

       

      end function

       

      Tout est bien paramétré et fonctionne nickel quand je supprime la ligne en rouge et que je remplace objEmail.To = MailResponsable 'Email Recipient par l'adresse du destinataire.

       

      Maintenant j'ai voulu faire en sorte que selon mes agences sélectionnées le rapport parte à la bonne personne, sauf que j'obtiens le message suivant :

      Objet requis: 'ActiveDocument.GetVariable(...)'

       

      Pour l'instruction : MailResponsable = ActiveDocument.GetVariable("vemail_agence").GetContent.String

       

      Je précise que j'ai bien un champ nommé vemail_agence.

       

      Avez-vous une idée ? EN effet je ne trouve aucun doc qui répond à ma question.

       

      Merci beaucoup,

       

      Rémi