' macro to run an Impromptu report, save it as a pdf ' attach the pdf in an email using Outlook ' this code is for examplary purposes only ' it is provided as is with no guarantee of any kind ' error trapping has not been included Declare Sub SaveThePDF(cat$, imr$, userclass$, pdf$ ) Declare Sub Outlook(strSubject$, strTo$, strBody$, strAttachment$) Dim objImpRep as Object Dim objImpApp as Object Dim objPDFPub as Object Dim objOutlook as Object Dim objOutlookEmail as Object Dim objOutlookAttachments as Object Sub Main() Dim strToday As String Dim strReportName1 As String Dim strCatalogName1 As String Dim strUserClass As String Dim strFileName1 As String Dim strTo1 As String strToday = date$ strCatalogName1 = "C:\program files\Cognos\cer5\samples\Impromptu\reports\gosales.CAT" strReportName1 = "C:\program files\Cognos\cer5\samples\Impromptu\reports\Annual_Product_Sales.imr" strUserClass = "Creator" strFileName1 = "C:\program files\Cognos\cer5\samples\Impromptu\reports\Annual_Product_Sales" & strToday & ".pdf" strTo1 = "whoever@company.com" call SaveThePDF ( strCatalogName1, strReportName1, strUserClass, strFileName1 ) msgbox "The pdf report has been generated!" strSubject = "Annual Product Sales Report" strBody = "Please find attached your report. If you have any questions, please do not hesitate to contact me." & Chr(13) & Chr(13) & "Joe Reporting Smarty" & Chr(13) & "Impromptu Report Administrator" & Chr(13) & "1-800-123-4567" & Chr(13) & Chr(13) call Outlook(strSubject, strTo1, strBody, strFileName1) msgbox "The email message has been created in Outlook!" End Sub Sub SaveThePDF(cat$, imr$, userclass$, pdf$) Set objImpApp = CreateObject("CognosImpromptu.Application") Set objImpRep = objImpApp.OpenReport(imr) objImpApp.OpenCatalog cat, userclass strReportName = objImpRep.FullName objImpRep.RetrieveAll Set objPDFPub = objImpRep.PublishPDF objPDFPub.Publish pdf objImpRep.CloseReport objImpApp.CloseCatalog objImpApp.Quit Set objImpApp = Nothing Set objImpRep = Nothing Set objPDFPub = Nothing End Sub Sub Outlook(strSubject$, strTo$, strBody$, strAttachment$) Set objOutlook = CreateObject("Outlook.Application") Set objOutlookEmail = objOutlook.CreateItem(OlMailItem) objOutlookEmail.Subject = strSubject objOutlookEmail.Body = strBody objOutlookEmail.To = strTo Set objOutlookAttachments = objOutlookEmail.Attachments objOutlookAttachments.Add strAttachment objOutlookEmail.Send ' the following two lines are also useful if you want to verify the email before sending it 'objOutlookEmail.Display 'objOutlookEmail.Save Set objOutlook = Nothing Set objOutlookEmail = Nothing Set objOutlookAttachments = Nothing End Sub