XLA routines: EE_SendReport
EE_SendReport is a hugely useful routine that sends a range as an email
- can also add attachments like zipped up files
- requires ms outlook
Sub EE_SendReport(rptRange As range, recipients As range, Files As range, Optional SendOrDisplay As Boolean, Optional ZipFileName As String) 'RptRange is a range containing text we want to be contained in the body 'Recipients is range containing email addresses Files is range containing 'list of files that we will zip up and add to mail SendOrDisplay - If= Send, mail is sent.. If Display, display mail. Const cstrAddSep As String = ";" Dim arrTo Dim strTo As String Dim arrAttach Dim strAttach As String Dim strZipFile As String Dim strFirstFile As String 'http://excelexperts.com/xla-routines-eeSendReport for updates on this sub routine arrTo = recipients If recipients.Cells.Count = 1 Then strTo = CStr(arrTo) Else strTo = Join(Application.Transpose(arrTo), cstrAddSep) End If arrAttach = Files If Files.Cells.Count = 1 Then strAttach = CStr(arrAttach) strFirstFile = strAttach Else strAttach = Join(Application.Transpose(arrAttach), ",") strFirstFile = Split(strAttach, ",")(0) End If strFirstFile = Left(strFirstFile, InStrRev(strFirstFile, ".") - 1) If ZipFileName <> "" Then strZipFile = Environ("Temp") & Application.PathSeparator & Replace(ZipFileName, ".zip", "") & ".zip" Else strZipFile = Environ("Temp") & Application.PathSeparator & EE_FileNameFromFilePath(strFirstFile) & ".zip" End If Call EE_ZipFile(Left(strZipFile, InStrRev(strZipFile, Application.PathSeparator)), EE_FileNameFromFilePath(strZipFile), strAttach) Call SendEmail(strTo, "", rptRange.value, Display, False, strZipFile) Kill strZipFile End Sub Public Function SendEmail(strMailTo As String, strSubject As String, _ strBodyText As String, SendOrDisp As OptSendDisplay, blnReceipt As _ Boolean, Optional strAttachment As String, Optional strCCTo As String, _ Optional strBCCTo As String) As Long 'This will return 0 if successfull else error number Dim objApp As Object Dim objMail As Object Dim arrAttachment() As String Dim intAttachLoop As Integer DoEvents On Error GoTo ErrHandler Set objApp = CreateObject("Outlook.Application") Set objMail = objApp.CreateItem(0) With objMail .To = strMailTo If Len(strCCTo) > 0 Then .CC = strCCTo If Len(strBCCTo) > 0 Then .BCC = strBCCTo .Subject = strSubject .Body = strBodyText .ReadReceiptRequested = blnReceipt 'Attachments If Len(strAttachment) > 0 Then arrAttachment() = Split(strAttachment, ",") For intAttachLoop = 0 To UBound(arrAttachment, 1) .Attachments.Add arrAttachment(intAttachLoop) Next intAttachLoop End If If SendOrDisp = Display Then .Display If SendOrDisp = Send Then .Send End With SendEmail = 0 'Success returned exitSendAttachment: Set objApp = Nothing Set objMail = Nothing Exit Function ErrHandler: SendEmail = Err.Number 'Error returned GoTo exitSendAttachment End Function
»
- Nick's blog
- Login or register to post comments
- 3011 reads
Recent comments
5 years 36 weeks ago
6 years 22 weeks ago
6 years 34 weeks ago
6 years 37 weeks ago
6 years 38 weeks ago
6 years 43 weeks ago
6 years 52 weeks ago
7 years 2 days ago
7 years 3 days ago
7 years 3 days ago