Hi all,
I am new to this Forum, and I have only recent (limited) with VBA and object oriented programing. I have made a Form in Microsoft 2003 using a modified verson of this macro. The modified code is below and tied the code to a form button in Access. So when I clicked the button it would send the emails to the emails in the table along with the attachments. I recently upgraded my computer to Microsoft Office 2010 and this macro no longer works.
I currently have a table in Access which contains:
EMAIL | DOCUMENT LOCATION
My company's final goal for this project is to be able to click a button in Access, and on the click send emails to the emails in the table.
What I am looking for is either some code addition to work around in order to allow Microsoft Outlook 2010 to send the emails using the old code or a better way of approaching this macro.
Thank you so much for your help,
Wreck1004
*Below is the second portion of the code in the URL above, the Access portion is the only part I modified*
Code:
Option Compare Database
Private Sub Command0_Click()
' ACCESS VBA MODULE: Send E-mail without Security Warning
' (c) 2005 Wayne Phillips (http://www.everythingaccess.com)
' Written 07/05/2005
' Last updated v1.3 - 11/11/2005
'
' Please read the full tutorial & code here:
' http://www.everythingaccess.com/tutorials.asp?ID=112
'
' Please leave the copyright notices in place - Thank you.
' This is a test function! - replace the e-mail addresses
' with your own before executing!!
' (CC/BCC can be blank strings, attachments string is optional)
Dim blnSuccessful As Boolean
Dim strHTML As String
Dim Lrs As DAO.Recordset
Dim LSQL As String
Dim LGST As String
'Open Connection to current Access Database
Set db = CurrentDb()
LSQL = "SELECT [Carrier Contact Info].[Email Address],[Carrier Contact Info].[File Location] FROM [Carrier Contact Info]"
Set Lrs = db.OpenRecordset(LSQL)
Do While Not Lrs.EOF
strHTML = "<html>" & _
"<body>" & _
"Carrier" & ",<br>" & _
"Attached is your scorecard" & _
"<br>" & _
"<br>" & "Regards," & "<br>" & _
"Sender" & _
"<br>" & _
"Email" & _
"<br>" & "phone #" & _
"</body>" & _
"</html>"
blnSuccessful = FnSafeSendEmail(Lrs![Email Address], _
"Carrier Scorecard for " & Lrs![Carrier], _
strHTML, _
Lrs![File Location])
If blnSuccessful Then
MsgBox "E-mail message sent successfully!"
Else
MsgBox "Failed to send e-mail!"
End If
Lrs.MoveNext
Loop
End Sub
'This is the procedure that calls the exposed Outlook VBA function...
Public Function FnSafeSendEmail(strTo As String, _
strSubject As String, _
strMessageBody As String, _
Optional strAttachmentPaths As String, _
Optional strCC As String, _
Optional strBCC As String) As Boolean
Dim objOutlook As Object ' Note: Must be late-binding.
Dim objNameSpace As Object
Dim objExplorer As Object
Dim blnSuccessful As Boolean
Dim blnNewInstance As Boolean
'Is an instance of Outlook already open that we can bind to?
On Error Resume Next
Set objOutlook = GetObject(, "Outlook.Application")
On Error GoTo 0
If objOutlook Is Nothing Then
'Outlook isn't already running - create a new instance...
Set objOutlook = CreateObject("Outlook.Application")
blnNewInstance = True
'We need to instantiate the Visual Basic environment... (messy)
Set objNameSpace = objOutlook.GetNamespace("MAPI")
Set objExplorer = objOutlook.Explorers.Add(objNameSpace.Folders(1), 0)
objExplorer.CommandBars.FindControl(, 1695).Execute
objExplorer.Close
Set objNameSpace = Nothing
Set objExplorer = Nothing
End If
blnSuccessful = objOutlook.FnSendMailSafe(strTo, strCC, strBCC, _
strSubject, strMessageBody, _
strAttachmentPaths)
If blnNewInstance = True Then objOutlook.Quit
Set objOutlook = Nothing
FnSafeSendEmail = blnSuccessful
End Function