I get the following error when the code below tries to fire off Outlook2003 to send an e-mail to the approver. The worse part of it is, that it only happens on some machines. I've talked to the IT folks and they have not seen anything that gives them a clue as to why some machines are different than others.
Cannot start Microsoft Outlook. A program error ocurred. Quit Outlook and Mircorsoft Windows and then start again.
Any ideas as to what I might be able to try, or guide my IT folks with?
The specific line of code
DoCmd.SendObject , , , vEmailTo, vEmailCC, , sSubject, strBody
The full code that works on most, but not all machines
'=== This program sends an e-mail with all the relevant information to the approver
On Error GoTo Err_cmdSendEmailForApproval_Click
'=== This section Sets the variable types
Dim strSender, strStartDate As Variant
Dim vRequesterEmail, vHrsToDate As Variant
Dim sStatus As String
'=== The following command saves the record before the rest of the
'=== actions take place
sStatus = "01 - Pending"
[Status] = sStatus
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
'=== This section gets the information from the form
'=== that is needed to send the email.
strSender = [Employee]
strApp_ID = [Approver]
strStartDate = [Abscense Date Start]
strEndDate = [Abscense Date End]
vHoursOff = [Abscense Hours]
'=== The following section executes look ups on various tables
'=== and a query to get the information needed to populate the e-mail
vRequesterLastName = DLookup("[Last Name]", "tbl_employees", "[Emp_ID]=" & strSender)
vRequesterFirstName = DLookup("[First Name]", "tbl_employees", "[Emp_ID]=" & strSender)
vHrsPerYear = DLookup("[Annual Vacation in hours]", "tbl_employees", "[Emp_ID]=" & strSender)
vHrsToDate = DLookup("[Hours To Date]", "qryTotalHrsToDateByEmployee", "[Emp_ID]=" & strSender)
vEmailTo = DLookup("", "tbl_employees", "[Emp_ID]=" & strApp_ID)
vEmailCC = DLookup("[email]", "tbl_employees", "[Emp_ID]=" & strSender)
'=== The Following calculates the hours yet to be approved (Available)
vHrsLeftToApprove = vHrsPerYear - vHrsToDate
'=== The following sets the "Subject" line of the email
sSubject = "Vacation Request Submitted by: "
sSubject = sSubject & vRequesterFirstName
sSubject = sSubject & " " & vRequesterLastName
'=== The following creates the body of the e-mail as a form letter.
strBody = "Vacation Request " & vbCrLf & vbCrLf & vbCrLf
strBody = strBody & "Vacation Starts on..........: "
strBody = strBody & strStartDate & vbCrLf
strBody = strBody & "Vacation Ends On............: "
strBody = strBody & strEndDate & vbCrLf & vbCrLf
strBody = strBody & "Amount of Time Requested off: "
strBody = strBody & vHoursOff & Chr$(32)
strBody = strBody & "Hrs"
strBody = strBody & vbCrLf & vbCrLf
strBody = strBody & "Vacation Hours Approved to Date: "
strBody = strBody & vHrsToDate
strBody = strBody & vbCrLf & vbCrLf
strBody = strBody & "Vacation Hours Available per Year: "
strBody = strBody & vHrsPerYear
strBody = strBody & vbCrLf & vbCrLf
strBody = strBody & "Vacation Hours Remaining Prior to This Request: "
strBody = strBody & vHrsLeftToApprove
strBody = strBody & vbCrLf & vbCrLf
strBody = strBody & "Please go to the Vacation Request System and to Approve or Deny the Vacation Request"
strBody = strBody & vbCrLf & vbCrLf
strBody = strBody & "Thank You"
strBody = strBody & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
strBody = strBody & "THIS E-MAIL WAS AUTOMATICALLY GENERATED FROM THE VACATION REQUEST SYSTEM"
'=== The next statment sends the e-mail using the variables above
'=== this method was used so that any e-mail the user hase
'=== can send the e-mail.
[b]DoCmd.SendObject , , , vEmailTo, vEmailCC, , sSubject, strBody[/b]
[StatusText] = "E-MAIL SENT - Do Not Edit"[/i]
Cannot start Microsoft Outlook. A program error ocurred. Quit Outlook and Mircorsoft Windows and then start again.
Any ideas as to what I might be able to try, or guide my IT folks with?
The specific line of code
DoCmd.SendObject , , , vEmailTo, vEmailCC, , sSubject, strBody
The full code that works on most, but not all machines
'=== This program sends an e-mail with all the relevant information to the approver
On Error GoTo Err_cmdSendEmailForApproval_Click
'=== This section Sets the variable types
Dim strSender, strStartDate As Variant
Dim vRequesterEmail, vHrsToDate As Variant
Dim sStatus As String
'=== The following command saves the record before the rest of the
'=== actions take place
sStatus = "01 - Pending"
[Status] = sStatus
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70
'=== This section gets the information from the form
'=== that is needed to send the email.
strSender = [Employee]
strApp_ID = [Approver]
strStartDate = [Abscense Date Start]
strEndDate = [Abscense Date End]
vHoursOff = [Abscense Hours]
'=== The following section executes look ups on various tables
'=== and a query to get the information needed to populate the e-mail
vRequesterLastName = DLookup("[Last Name]", "tbl_employees", "[Emp_ID]=" & strSender)
vRequesterFirstName = DLookup("[First Name]", "tbl_employees", "[Emp_ID]=" & strSender)
vHrsPerYear = DLookup("[Annual Vacation in hours]", "tbl_employees", "[Emp_ID]=" & strSender)
vHrsToDate = DLookup("[Hours To Date]", "qryTotalHrsToDateByEmployee", "[Emp_ID]=" & strSender)
vEmailTo = DLookup("", "tbl_employees", "[Emp_ID]=" & strApp_ID)
vEmailCC = DLookup("[email]", "tbl_employees", "[Emp_ID]=" & strSender)
'=== The Following calculates the hours yet to be approved (Available)
vHrsLeftToApprove = vHrsPerYear - vHrsToDate
'=== The following sets the "Subject" line of the email
sSubject = "Vacation Request Submitted by: "
sSubject = sSubject & vRequesterFirstName
sSubject = sSubject & " " & vRequesterLastName
'=== The following creates the body of the e-mail as a form letter.
strBody = "Vacation Request " & vbCrLf & vbCrLf & vbCrLf
strBody = strBody & "Vacation Starts on..........: "
strBody = strBody & strStartDate & vbCrLf
strBody = strBody & "Vacation Ends On............: "
strBody = strBody & strEndDate & vbCrLf & vbCrLf
strBody = strBody & "Amount of Time Requested off: "
strBody = strBody & vHoursOff & Chr$(32)
strBody = strBody & "Hrs"
strBody = strBody & vbCrLf & vbCrLf
strBody = strBody & "Vacation Hours Approved to Date: "
strBody = strBody & vHrsToDate
strBody = strBody & vbCrLf & vbCrLf
strBody = strBody & "Vacation Hours Available per Year: "
strBody = strBody & vHrsPerYear
strBody = strBody & vbCrLf & vbCrLf
strBody = strBody & "Vacation Hours Remaining Prior to This Request: "
strBody = strBody & vHrsLeftToApprove
strBody = strBody & vbCrLf & vbCrLf
strBody = strBody & "Please go to the Vacation Request System and to Approve or Deny the Vacation Request"
strBody = strBody & vbCrLf & vbCrLf
strBody = strBody & "Thank You"
strBody = strBody & vbCrLf & vbCrLf & vbCrLf & vbCrLf & vbCrLf
strBody = strBody & "THIS E-MAIL WAS AUTOMATICALLY GENERATED FROM THE VACATION REQUEST SYSTEM"
'=== The next statment sends the e-mail using the variables above
'=== this method was used so that any e-mail the user hase
'=== can send the e-mail.
[b]DoCmd.SendObject , , , vEmailTo, vEmailCC, , sSubject, strBody[/b]
[StatusText] = "E-MAIL SENT - Do Not Edit"[/i]