Justin
asked on
How to add Voting Buttons onto Microsoft Outlook 2007 E-mail message from an Excel Macro?
Hi Guys, I currently have an Excel Macro that opens Excel tabs into Outlook and sends them as an attachment. I would like the reciever of this e-mail to use Voting Buttons in Outlook to approve or reject the e-mail. Outlook 2007 has a feature in the "Options" menu which shows Voting Buttons. How to I add this into the below VB code so it does it automatically?
Sub Mail_Sheets_Array()
'Working in 2000-2010
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 sh As Worksheet
Dim TheActiveWindow As Window
Dim TempWindow As Window
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set Sourcewb = ActiveWorkbook
'Copy the sheets to a new workbook
'We add a temporary Window to avoid the Copy problem
'if there is a List or Table in one of the sheets and
'if the sheets are grouped
With Sourcewb
Set TheActiveWindow = ActiveWindow
Set TempWindow = .NewWindow
.Sheets(Array("FIEQ Dailies", "SCRIPS JAN 11", "F&R Counterparty", "F&R Write Offs", "CHEAP DIV RIGHTS JAN 11", "Structured- UKSCR")).Copy
End With
'Close temporary Window
TempWindow.Close
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-2010, we exit the sub when your answer is
'NO in the security dialog that you only see when you copy
'an sheet from a xlsm file with macro's disabled.
If Sourcewb.Name = .Name Then
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
MsgBox "Your answer is NO in the security dialog"
Exit Sub
Else
Select Case Sourcewb.FileFormat
Case 51: FileExtStr = ".xls": FileFormatNum = -4143
Case 52:
If .HasVBProject Then
FileExtStr = ".xls": FileFormatNum = -4143
Else
FileExtStr = ".xls": FileFormatNum = -4143
End If
Case 56: FileExtStr = ".xls": FileFormatNum = -4143
Case Else: FileExtStr = ".xls": FileFormatNum = -4143
End Select
End If
End If
End With
Sheets("FIEQ Dailies").Activate
Columns("W:AB").Select
Selection.Delete Shift:=xlToLeft
' Columns("X:X").Select
' Selection.Delete Shift:=xlToLeft
' Change all cells in the worksheets to values if you want
For Each sh In Destwb.Worksheets
sh.Select
With sh.UsedRange
.Cells.Copy
.Cells.PasteSpecial xlPasteValues
.Cells(1).Select
End With
Application.CutCopyMode = False
Destwb.Worksheets(1).Selec t
Next sh
'Save the new workbook/Mail it/Delete it
TempFilePath = Environ$("temp") & "\"
TempFileName = "" & Sourcewb.Name & " " _
'& Format(Now, "dd-mmm-yy h-mm-ss")
Set OutApp = CreateObject("Outlook.Appl ication")
Set OutMail = OutApp.CreateItem(0)
With Destwb
.SaveAs TempFilePath & TempFileName & FileExtStr, _
FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.To = "cscanlan@mfglobal.com;dbr uyns@mfglo bal.com;sb ruce2@mfgl obal.com;v foster@mfg lobal.com; shawkswort h@mfglobal .com;nheal e@mfglobal .com; anussbaum@mfglobal.com; mturner@mfglobal.com; swagstaff@mfglobal.com; chenstock@mfglobal.com; adwilliams@mfglobal.com; mwhitehead@mfglobal.com; obottomley@mfglobal.com"
.CC = ""
.BCC = ""
.Subject = "FIEQ Dailies - "
.Body = "Regards Vishal"
.Attachments.Add Destwb.FullName
'You can add other files also like this
'.Attachments.Add ("C:\test.txt")
.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
Sub Mail_Sheets_Array()
'Working in 2000-2010
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 sh As Worksheet
Dim TheActiveWindow As Window
Dim TempWindow As Window
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
Set Sourcewb = ActiveWorkbook
'Copy the sheets to a new workbook
'We add a temporary Window to avoid the Copy problem
'if there is a List or Table in one of the sheets and
'if the sheets are grouped
With Sourcewb
Set TheActiveWindow = ActiveWindow
Set TempWindow = .NewWindow
.Sheets(Array("FIEQ Dailies", "SCRIPS JAN 11", "F&R Counterparty", "F&R Write Offs", "CHEAP DIV RIGHTS JAN 11", "Structured- UKSCR")).Copy
End With
'Close temporary Window
TempWindow.Close
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-2010, we exit the sub when your answer is
'NO in the security dialog that you only see when you copy
'an sheet from a xlsm file with macro's disabled.
If Sourcewb.Name = .Name Then
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
MsgBox "Your answer is NO in the security dialog"
Exit Sub
Else
Select Case Sourcewb.FileFormat
Case 51: FileExtStr = ".xls": FileFormatNum = -4143
Case 52:
If .HasVBProject Then
FileExtStr = ".xls": FileFormatNum = -4143
Else
FileExtStr = ".xls": FileFormatNum = -4143
End If
Case 56: FileExtStr = ".xls": FileFormatNum = -4143
Case Else: FileExtStr = ".xls": FileFormatNum = -4143
End Select
End If
End If
End With
Sheets("FIEQ Dailies").Activate
Columns("W:AB").Select
Selection.Delete Shift:=xlToLeft
' Columns("X:X").Select
' Selection.Delete Shift:=xlToLeft
' Change all cells in the worksheets to values if you want
For Each sh In Destwb.Worksheets
sh.Select
With sh.UsedRange
.Cells.Copy
.Cells.PasteSpecial xlPasteValues
.Cells(1).Select
End With
Application.CutCopyMode = False
Destwb.Worksheets(1).Selec
Next sh
'Save the new workbook/Mail it/Delete it
TempFilePath = Environ$("temp") & "\"
TempFileName = "" & Sourcewb.Name & " " _
'& Format(Now, "dd-mmm-yy h-mm-ss")
Set OutApp = CreateObject("Outlook.Appl
Set OutMail = OutApp.CreateItem(0)
With Destwb
.SaveAs TempFilePath & TempFileName & FileExtStr, _
FileFormat:=FileFormatNum
On Error Resume Next
With OutMail
.To = "cscanlan@mfglobal.com;dbr
.CC = ""
.BCC = ""
.Subject = "FIEQ Dailies - "
.Body = "Regards Vishal"
.Attachments.Add Destwb.FullName
'You can add other files also like this
'.Attachments.Add ("C:\test.txt")
.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
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Hi Tasmant, that works great! What if I want to add a hyperlink into the e-mail header?
The actions are defined in the line:
arrActions = Split("First Action,Another Action,Yet another action", ",")
Modify "First Action,Another Action,Yet another action" as required seperating each string with a comma only.
Chris
Open in new window