Michael515
Board Regular
- Joined
- Jul 10, 2014
- Messages
- 136
Hi Y'all,
With the help of Ron de Bruin's templates, I've pieced together this vba code to create an email with an attachment from an excel document, and now I want to add a signature to it. I keep getting a compile error around the GetBoiler(SigString) part of the code, and I can't quite seem to figure out why. Probably an easy fix I am not seeing. Here's my code, let me know what y'all think. Thanks ahead of time for all the help!
Also if anyone knows how to password protect the created attachment, mapping the password to a cell in the "Email" sheet that would be awesome too
With the help of Ron de Bruin's templates, I've pieced together this vba code to create an email with an attachment from an excel document, and now I want to add a signature to it. I keep getting a compile error around the GetBoiler(SigString) part of the code, and I can't quite seem to figure out why. Probably an easy fix I am not seeing. Here's my code, let me know what y'all think. Thanks ahead of time for all the help!
Also if anyone knows how to password protect the created attachment, mapping the password to a cell in the "Email" sheet that would be awesome too
Code:
Sub Mail_ActiveSheet()
'Working in Excel 2000-2016
'For Tips see: [URL]http://www.rondebruin.nl/win/winmail/Outlook/tips.htm[/URL]
Dim FileExtStr As String
Dim FileFormatNum As Long
Dim Sourcewb As Workbook
Dim Destwb As Workbook
Dim TempFilePath As String
Dim TempFileName As String
Dim OutApp As Object
Dim OutMail As Object
Dim EmailTo As String
Dim EmailCc As String
Dim EmailBcc As String
Dim EmailSubject As String
Dim EmailAttachment As String
Dim EmailBody As String
Dim EmailDlist As String
Dim SigString As String
Dim SigName As String
Dim Signature As String
EmailTo = Sheets("Email").Range("B2")
EmailCc = Sheets("Email").Range("B3")
EmailBcc = Sheets("Email").Range("B4")
EmailSubject = Sheets("Email").Range("B5")
EmailAttachment = Sheets("Email").Range("B6")
EmailBody = Sheets("Email").Range("B7")
SigName = Sheets("Email").Range("B9")
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set Sourcewb = ActiveWorkbook
'Copy the ActiveSheet to a new workbook
Sheets("Sheet1").Copy
Set Destwb = ActiveWorkbook
'Determine the Excel version and file extension/format
With Destwb
If Val(Application.Version) < 12 Then
'You use Excel 97-2003
FileExtStr = ".xls": FileFormatNum = -4143
Else
'You use Excel 2007-2016
Select Case Sourcewb.FileFormat
Case 51: FileExtStr = ".xlsx": FileFormatNum = 51
Case 52:
If .HasVBProject Then
FileExtStr = ".xlsm": FileFormatNum = 52
Else
FileExtStr = ".xlsx": FileFormatNum = 51
End If
Case 56: FileExtStr = ".xls": FileFormatNum = 56
Case Else: FileExtStr = ".xlsb": FileFormatNum = 50
End Select
End If
End With
' 'Change all cells in the worksheet to values if you want
' With Destwb.Sheets(1).UsedRange
' .Cells.Copy
' .Cells.PasteSpecial xlPasteValues
' .Cells(1).Select
' End With
' Application.CutCopyMode = False
'Save the new workbook/Mail it/Delete it
TempFilePath = Environ$("temp") & ""
TempFileName = EmailAttachment
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With Destwb
.SaveAs TempFilePath & TempFileName & FileExtStr, FileFormat:=FileFormatNum
SigString = Environ("appdata") & _
"\Microsoft\Signatures" & SigName & ".htm"
If Dir(SigString) <> "" Then
Signature = GetBoiler(SigString)
Else
Signature = ""
End If
On Error Resume Next
With OutMail
.to = EmailTo
.CC = EmailCc
.BCC = EmailBcc
.Subject = EmailSubject
.Body = EmailBody & "
" & Signature
.Attachments.Add Destwb.FullName
'You can add other files also like this
'.Attachments.Add ("C:\test.txt")
.Display 'or use .Display
End With
On Error GoTo 0
.Close savechanges:=False
End With
'Delete the file you have send
Kill TempFilePath & TempFileName & FileExtStr
Set OutMail = Nothing
Set OutApp = Nothing
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub