Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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