Skip to main content
Announcements
Introducing Qlik Answers: A plug-and-play, Generative AI powered RAG solution. READ ALL ABOUT IT!
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

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


0 Replies