Set objOutlook = CreateObject("Outlook.Application").
I do not work in IT but no one seems to know how to fix this error. Someone please help me? I am the only one having this issue with trying to use the data base when I get to the sending the email. Someone said because I have both Micro soft office 15 & 16 on my computer its confused will that cause this issue If the developer only has the 15 version? Maybe I am wrong but it seems this issue has to do with outlook and If I have this issue others will end up with it in the future trying to use this data base.
Run-time error'-2147319779(8002801d)':
Automation error
Library not registered
Then when I click on debug the below message pops up.
Expand|Select|Wrap|Line Numbers
- Option Compare Database
- Dim Hold_ID As Long
- Dim Finance_Approval_Required As Boolean
- Public Function GetPath()
- getpath2
- End Function
- Public Sub getpath2()
- DbPath = Application.CurrentProject.Path
- End Sub
- Function Transfer_Text_to_Table(Spec_Name As String, Table_Name As String, FileIn_Name As String)
- Dim FilePath_Name As String
- getpath2
- FilePath_Name = DbPath & "\" & FileIn_Name
- DoCmd.TransferText acImportDelim, Spec_Name, Table_Name, FilePath_Name
- End Function
- Public Function Excel2Access(Table_Name As String, Spreadsheet_Name As String)
- Dim FilePath_Name As String
- getpath2
- FilePath_Name = DbPath & "\" & Spreadsheet_Name
- DoCmd.TransferSpreadsheet acImport, 8, Table_Name, FilePath_Name, True
- End Function
- Public Function Run_CC_EmailM(Email_Type As String, Email_ID As Long)
- Call Run_CC_Email(Email_Type, Email_ID)
- End Function
- Public Sub Run_CC_Email(Email_Type As String, Email_ID As Long)
- ' On Error GoTo Err_Run_CC_Email
- Dim objOutlook As Outlook.Application
- Dim objMail As Outlook.MailItem
- Dim sSQL As String
- Dim DB As DAO.Database
- Dim Hold_Buyer As String
- Dim Email_Buyer As String
- Dim Hold_bodyLine1 As String
- Dim Hold_CCRequest_info As String
- Dim Hold_CCRequest_Count_Results As String
- Dim Hold_Form As String
- Dim Hold_Date_Entered As String
- Dim Hold_Date_Closed As String
- Dim Hold_Request_by As String
- Dim Hold_Part_Nbr As String
- Dim Hold_Part_Description As String
- Dim Hold_Reason As String
- Dim Hold_Comments As String
- Dim Hold_StdCost As Double
- Dim Hold_Supplier As String
- Dim Hold_Supply_Type As String
- Dim hold_Item_Status As String
- Dim hold_Planner As String
- Dim Hold_AdHoc_Scheduled As String
- Dim Hold_CC_Status As String
- Dim Hold_Cycle_Count_Comments As String
- Dim Hold_Finance_comments As String
- Dim Hold_Adjust_Transfer As String
- Dim sTitle As String, sFile As String, sErr As String
- Dim rstDist As DAO.Recordset
- Dim RstCCRequest As DAO.Recordset
- Set DB = CurrentDb
- Set RstCCRequest = DB.OpenRecordset("TblCycleCountRequest", dbOpenDynaset)
- RstCCRequest.FindFirst "[ID] = " & Email_ID
- Hold_Part_Nbr = Nz(RstCCRequest![Part Nbr], " ")
- Hold_Part_Description = Nz(RstCCRequest![Description], " ")
- Hold_Reason = Nz(RstCCRequest![Reason for Request], " ")
- Hold_Comments = Nz(RstCCRequest![Request_Comments], " ")
- Hold_StdCost = Nz(RstCCRequest![Standard Cost], " ")
- Hold_Supplier = Nz(RstCCRequest![Supplier], " ")
- hold_Item_Status = Nz(RstCCRequest![Item Status], " ")
- hold_Planner = Nz(RstCCRequest![Planner Code], " ")
- Hold_Date_Entered = Nz(RstCCRequest![Date Entered], " ")
- Hold_CC_Status = Nz(RstCCRequest![CCReq_Status], " ")
- Hold_AdHoc_Scheduled = Nz(RstCCRequest![Adhoc/Scheduled], " ")
- Hold_Supply_Type = Nz(RstCCRequest![Supply Type], " ")
- Hold_Date_Closed = Nz(RstCCRequest![CC_Date_Closed], " ")
- Hold_Request_by = Nz(RstCCRequest![Requested By], " ")
- Hold_Buyer = Nz(RstCCRequest![Buyer], " ")
- Hold_Finance_comments = Nz(RstCCRequest![Finance Comments], " ")
- If Nz(RstCCRequest![Adjust_Transfer], " ") = 1 Then
- Hold_Adjust_Transfer = "Adjust Oracle"
- Else
- If Nz(RstCCRequest![Adjust_Transfer], " ") = 2 Then
- Hold_Adjust_Transfer = "Transfer to REV/CCP"
- Else
- Hold_Adjust_Transfer = Nz(RstCCRequest![Adjust_Transfer], " ")
- End If
- End If
- Hold_Cycle_Count_Comments = Nz(RstCCRequest![Cycle_Count_Comments], " ")
- RstCCRequest.Close
- Set RstCCRequest = Nothing
- 'Prelims
- DoCmd.SetWarnings False
- DoCmd.Hourglass True
- Set DB = CurrentDb
- sFile = " "
- 'SELECT Email_Distribution.Email_Address, Email_Distribution.Email_Buyer, Email_Distribution.Email_Initial_CC_Request
- 'From Email_Distribution
- 'WHERE (((Email_Distribution.Email_Buyer)="Coates, Terence D")) OR (((Email_Distribution.Email_Initial_CC_Request)=True));
- ' If Email_Type = "Email_Initial_CC_Request" Or Email_Type = "Email_Final_CC_Results" Then
- Email_Buyer = Hold_Buyer
- ' Else
- ' Email_Buyer = "xxxxxxxxx"
- ' End If
- sSQL = "SELECT Email_Distribution.Email_Address, Email_Distribution.Email_Buyer, "
- sSQL = sSQL & "Email_Distribution.Email_Initial_CC_Request "
- sSQL = sSQL & "FROM Email_Distribution "
- sSQL = sSQL & "WHERE(((Email_Distribution.Email_Buyer)='"
- sSQL = sSQL & Email_Buyer & "')) OR (((Email_Distribution."
- sSQL = sSQL & Email_Type & ")=True)"
- sSQL = sSQL & ");"
- Set rstDist = DB.OpenRecordset(sSQL)
- If rstDist.EOF = True Then
- sErr = "no entries in Email_distribution table"
- MsgBox sErr, vbInformation + vbOKOnly
- Else
- Set objOutlook = CreateObject("Outlook.Application")
- 'Prepare email message
- Set objMail = objOutlook.CreateItem(olMailItem)
- With objMail
- 'Build recordset on recipients
- rstDist.MoveFirst
- While Not rstDist.EOF
- 'Add Recipient
- With .Recipients.Add(rstDist![Email_Address])
- .Type = olTo
- End With
- rstDist.MoveNext
- Wend
- rstDist.Close
- Set rstDist = Nothing
- 'Add the subject
- If Email_Type = "Email_Initial_CC_Request" Then
- .Subject = "Initial Cycle Count Request # " _
- & Email_ID & " Part Number: " & Hold_Part_Nbr
- Hold_bodyLine1 = "Please perform cycle count on following Part Number: " & _
- Hold_Part_Nbr & " " & Hold_Part_Description & vbCrLf
- Else
- If Email_Type = "Email_Organization_CC_Approval" Then
- .Subject = "Organization Approval required for Cycle Count Request # " _
- & Email_ID & " Part Number: " & Hold_Part_Nbr
- Hold_bodyLine1 = "Counts are complete on Cycle Count request # : " & _
- Email_ID & ". Please review and approve in cycle count data base. " & vbCrLf
- Else
- If Email_Type = "Email_Finance_CC_Approval" Then
- .Subject = "Finance Approval required for Cycle Count Request # " _
- & Email_ID & " Part Number: " & Hold_Part_Nbr
- Hold_bodyLine1 = "Counts are complete on Cycle Count request # : " & _
- Email_ID & ". Variance is greater than $2,500. Please review and approve in cycle count data base. " & vbCrLf
- Else
- If Email_Type = "Email_Final_CC_Results" Then
- .Subject = "Final results for Cycle Count Request # " _
- & Email_ID & " Part Number: " & Hold_Part_Nbr
- Hold_bodyLine1 = "Counts and adjustments are complete on Cycle Count request # : " & _
- Email_ID & ". Below are results: " & vbCrLf
- Else
- If Email_Type = "Email_Make_Adjustments" Then
- .Subject = "Oracle adjustments required for Cycle Count Request # " _
- & Email_ID & " Part Number: " & Hold_Part_Nbr
- Hold_bodyLine1 = "All approvals are complete on Cycle Count request # : " & _
- Email_ID & ". Please make necessary adjustments in Oracle and update CC database when complete " & vbCrLf
- End If
- End If
- End If
- End If
- End If
- Hold_CCRequest_info = Hold_CCRequest_info & "Requested By: " & Hold_Request_by & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & "Date Entered: " & Hold_Date_Entered & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & "Reason for request: " & Hold_Reason & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & "Requester Comments: " & Hold_Comments & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & " " & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & "Buyer : " & Hold_Buyer & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & "Std Cost : " & Hold_StdCost & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & "Supplier : " & Hold_Supplier & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & "Supply Type: " & Hold_Supply_Type & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & "Planner : " & hold_Planner & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & "Item Status : " & Hold_CC_Status & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & " " & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & "Cycle Count Comments : " & Hold_Cycle_Count_Comments & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & "Finance Comments : " & Hold_Finance_comments & vbCrLf
- Hold_CCRequest_info = Hold_CCRequest_info & "Adjust or Transfer : " & Hold_Adjust_Transfer & vbCrLf
- 'Add standard message text to body
- .Body = .Body & Hold_bodyLine1 & vbCrLf
- .Body = .Body & " " & vbCrLf
- .Body = .Body & Hold_CCRequest_info & vbCrLf
- .Body = .Body & " " & vbCrLf
- 'Closure
- .Body = .Body & vbCrLf & "Thanks" & vbCrLf & vbCrLf & "Cycle Count Team" & vbCrLf
- .Body = .Body & " " & vbCrLf
- .Body = .Body & " " & vbCrLf
- 'Send the mail message
- .Send
- End With
- End If
- Exit_Run_CC_Email:
- DoCmd.SetWarnings True
- DoCmd.Hourglass False
- Exit Sub
- Err_Run_CC_Email:
- sErr = "Error " & Error & " / " & Err
- MsgBox sErr, vbInformation + vbOKOnly, "Error on Email subroutine"
- Resume Exit_Run_CC_Email
- End Sub
- Public Function Add_Subinventory_Recs()
- Dim RstSubinventory As Recordset
- Dim RstCCDetail As Recordset
- Dim DB As Database
- Set DB = CurrentDb
- Set RstSubinventory = DB.OpenRecordset("CC_Subinventory")
- Set RstCCDetail = DB.OpenRecordset("Tbl_CC_Detail")
- RstSubinventory.MoveFirst
- Do Until RstSubinventory.EOF
- RstCCDetail.AddNew
- RstCCDetail![CC_ID] = Forms!FrmNewCycleCountRequest![ID]
- RstCCDetail![CC_Subinv] = RstSubinventory![CC_Subinventory_Name]
- RstCCDetail.Update
- RstSubinventory.MoveNext
- Loop
- RstCCDetail.Close
- RstSubinventory.Close
- Set RstCCDetail = Nothing
- Set RstSubinventory = Nothing
- End Function
- Public Function Calc_Count_Totals()
- Dim RstCCDetail As DAO.Recordset
- Dim RstMisc As DAO.Recordset
- Dim DB As DAO.Database
- Dim Tot_Oracle As Double
- Dim Tot_Actual As Double
- Dim Tot_Variance As Double
- Dim No_more_Match As Boolean
- Dim Count_complete As Boolean
- Dim New_Stat As String
- Dim Hold_Finance_Limit
- Dim Tot_Variance_Val As Double
- Total_Oracle = 0
- Total_Actual = 0
- Total_Variance = 0
- Total_Variance_Value = 0
- No_more_Match = False
- Count_complete = True
- Set DB = CurrentDb
- Set RstMisc = DB.OpenRecordset("Misc_Parameters", dbOpenDynaset)
- RstMisc.MoveFirst
- Hold_Finance_Limit = RstMisc![Finance_approve_limit]
- RstMisc.Close
- Set RstMisc = Nothing
- Set RstCCDetail = DB.OpenRecordset("Tbl_CC_Detail", dbOpenDynaset)
- Hold_ID = Forms!FrmCycleCountRequest![ID]
- RstCCDetail.FindFirst "CC_ID = " & Hold_ID
- If RstCCDetail.NoMatch Then
- Forms!FrmCycleCountRequest!Frm_CC_Detail![TxtTotOracle] = Total_Oracle
- Forms!FrmCycleCountRequest!Frm_CC_Detail![TxtTotActual] = Total_Actual
- Forms!FrmCycleCountRequest!Frm_CC_Detail![TxtTotVariance] = Total_Variance
- Forms!FrmCycleCountRequest!Frm_CC_Detail![TxtTotVarianceVal] = FormatCurrency(Total_variance_val, 2)
- Forms!FrmCycleCountRequest!Frm_CC_Detail![Lbl_Count_Complete].Visible = False
- Else
- Do While No_more_Match = False
- Total_Oracle = Total_Oracle + RstCCDetail![CC_Oracle_Qty]
- Total_Actual = Total_Actual + RstCCDetail![CC_Actual_Qty]
- Total_Variance = Total_Variance + RstCCDetail![CC_Variance_Qty]
- Total_variance_val = Total_variance_val + RstCCDetail![CC_Variance_Value]
- If Count_complete = True Then
- If IsNull(RstCCDetail![CC_Complete_Date]) Then
- Count_complete = False
- End If
- End If
- RstCCDetail.MoveNext
- If RstCCDetail.EOF Then
- No_more_Match = True
- Else
- If RstCCDetail![CC_ID] <> Hold_ID Then
- No_more_Match = True
- End If
- End If
- Loop
- Forms!FrmCycleCountRequest!Frm_CC_Detail![TxtTotOracle] = Total_Oracle
- Forms!FrmCycleCountRequest!Frm_CC_Detail![TxtTotActual] = Total_Actual
- Forms!FrmCycleCountRequest!Frm_CC_Detail![TxtTotVariance] = Total_Variance
- Forms!FrmCycleCountRequest!Frm_CC_Detail![TxtTotVarianceVal] = FormatCurrency(Total_variance_val, 2)
- 'Hide Finance Approval fields if variance value is less 5han specified Limit
- If Abs(Total_variance_val) >= Hold_Finance_Limit Then
- Finance_Approval_Required = True
- If Count_complete = True And (Forms!FrmCycleCountRequest![CCReq_Status] = "Counts Approved- Pending Finance Approval" _
- Or Forms!FrmCycleCountRequest![CCReq_Status] = "Counts Approved- Pending Oracle Adjustment" _
- Or Forms!FrmCycleCountRequest![CCReq_Status] = "CC Completed") Then
- Call Hide_Display_Finance_Approve("Display")
- Else
- Call Hide_Display_Finance_Approve("Hide")
- End If
- Else
- Finance_Approval_Required = False
- End If
- If Forms!FrmCycleCountRequest![CCReq_Status] = "Count in Process" And Count_complete = True Then
- Forms!FrmCycleCountRequest!Frm_CC_Detail![Lbl_Count_Complete].Visible = True
- New_Stat = "Complete"
- Call Manage_Status(New_Stat)
- End If
- End If
- RstCCDetail.Close
- Set RstCCDetail = Nothing
- End Function
- Public Function CCDetail_Calc_Variance()
- Forms!FrmCycleCountRequest!Frm_CC_Detail![CC_Variance_Qty] = _
- Forms!FrmCycleCountRequest!Frm_CC_Detail![CC_Oracle_Qty] - Forms!FrmCycleCountRequest!Frm_CC_Detail![CC_Actual_Qty]
- Forms!FrmCycleCountRequest!Frm_CC_Detail![CC_Variance_Value] = _
- Forms!FrmCycleCountRequest!Frm_CC_Detail![CC_Variance_Qty] * Forms!FrmCycleCountRequest![Standard Cost]
- End Function
- Public Function Manage_Status(Change As String)
- Dim RstCCRequest As Recordset
- Dim DB As Database
- ' Set DB = CurrentDb
- ' Set RstCCRequest = DB.OpenRecordset("TblCycleCountRequest")
- Select Case Change
- Case "InProcess"
- Status_Hold = "Count in Process"
- Case "Complete"
- Status_Hold = "Initial Counts Complete/Pending Approval"
- If MsgBox("OK to send email requesting Mgmt approval? ", vbInformation + vbYesNo) = vbNo Then
- Cancel = True
- Else
- Forms!FrmCycleCountRequest![CCReq_Status] = Status_Hold
- Call Run_CC_Email("Email_Organization_CC_Approval", Hold_ID)
- Call Hide_Display_Mgmt_Approve("Display")
- Call Hide_Display_Finance_Approve("Hide")
- Call Hide_Display_Adjust("Hide")
- End If
- Case "Approved-Mgmt"
- Status_Hold = "Counts Approved- Pending Finance Approval"
- If MsgBox("OK to send email requesting Fiance approval? ", vbInformation + vbYesNo) = vbNo Then
- Cancel = True
- Else
- Forms!FrmCycleCountRequest![CCReq_Status] = Status_Hold
- Call Run_CC_Email("Email_Finance_CC_Approval", Hold_ID)
- Call Hide_Display_Mgmt_Approve("Display")
- Call Hide_Display_Finance_Approve("Display")
- Call Hide_Display_Adjust("Hide")
- End If
- Case "Approved_Final"
- Status_Hold = "Counts Approved- Pending Oracle Adjustment"
- If MsgBox("OK to send email requesting Oracle adjustment? ", vbInformation + vbYesNo) = vbNo Then
- Cancel = True
- Else
- Forms!FrmCycleCountRequest![CCReq_Status] = Status_Hold
- Call Run_CC_Email("Email_Make_Adjustments", Hold_ID)
- Call Hide_Display_Mgmt_Approve("Display")
- Call Hide_Display_Finance_Approve("Display")
- Call Hide_Display_Adjust("Display")
- End If
- Case "Done"
- Status_Hold = "CC Completed"
- Forms!FrmCycleCountRequest![CCReq_Status] = Status_Hold
- Call Run_CC_Email("Email_Final_CC_Results", Hold_ID)
- Case Else
- MsgBox ("Case Else")
- End Select
- End Function
- Public Function Lock_Counts()
- ' Forms!FrmCycleCountRequest!Frm_CC_Detail.Locked = True
- End Function
- Public Function Lock_Approvals()
- ' Forms!FrmCycleCountRequest![CC_Approval_Initials].Locked = True
- ' Forms!FrmCycleCountRequest![Finance_Approve_Initials].Locked = True
- ' Forms!FrmCycleCountRequest![MFG Adjust].Locked = True
- ' Forms!FrmCycleCountRequest![US2 Adjust].Locked = True
- End Function
- Public Function Calc_Actual_Total()
- Dim RstActDetail As DAO.Recordset
- Dim DB As DAO.Database
- Dim Tot_Actual As Long
- Dim No_more_Match As Boolean
- Dim Hold_ID As String
- Dim Hold_Subinv As String
- Tot_Actual = 0
- No_more_Match = False
- Set DB = CurrentDb
- Set RstActDetail = DB.OpenRecordset("Actual_Subinv_Count_Detail", dbOpenDynaset)
- Hold_ID = Forms!Actual_Subinv_Count_Detail![TxtCC_ID]
- Hold_Subinv = Forms!Actual_Subinv_Count_Detail![TxtSubInv]
- RstActDetail.FindFirst "[Actual_ID] = '" & Hold_ID & "' AND Actual_Subin = '" & Hold_Subinv & "'"
- If RstActDetail.NoMatch Then
- Forms!Actual_Subinv_Count_Detail![TxtAct_Det_Tot] = Tot_Actual
- Else
- Do While No_more_Match = False
- Tot_Actual = Tot_Actual + RstActDetail![Actual_Count]
- RstActDetail.MoveNext
- If RstActDetail.EOF Then
- No_more_Match = True
- Else
- If RstActDetail![Actual_ID] <> Hold_ID Or RstActDetail![Actual_Subin] <> Hold_Subinv Then
- No_more_Match = True
- End If
- End If
- Loop
- Forms!Actual_Subinv_Count_Detail![TxtAct_Det_Tot] = Tot_Actual
- End If
- RstActDetail.Close
- Set RstActDetail = Nothing
- End Function
- Public Function Hide_Display_Mgmt_Approve(Action As String)
- Dim True_False As Boolean
- If Action = "Hide" Then
- True_False = False
- Else
- True_False = True
- End If
- Forms!FrmCycleCountRequest![CC_Approval_Initials].Visible = True_False
- Forms!FrmCycleCountRequest![CC_Approval_Date].Visible = True_False
- Forms!FrmCycleCountRequest![Label66].Visible = True_False
- End Function
- Public Function Hide_Display_Finance_Approve(Action As String)
- Dim True_False As Boolean
- If Action = "Hide" Then
- True_False = False
- Else
- True_False = True
- End If
- Forms!FrmCycleCountRequest![Finance_Approve_Initials].Visible = True_False
- Forms!FrmCycleCountRequest![Finance_Approve_Date].Visible = True_False
- Forms!FrmCycleCountRequest![TxtFinance_Comm].Visible = True_False
- Forms!FrmCycleCountRequest![Frame70].Visible = True_False
- Forms!FrmCycleCountRequest![Label67].Visible = True_False
- End Function
- Public Function Hide_Display_Adjust(Action As String)
- Dim True_False As Boolean
- If Action = "Hide" Then
- True_False = False
- Else
- True_False = True
- End If
- Forms!FrmCycleCountRequest![MFG Adjust].Visible = True_False
- Forms!FrmCycleCountRequest![US2 Adjust].Visible = True_False
- Forms!FrmCycleCountRequest![Adjustments Complete].Visible = True_False
- End Function
- Public Function Process_Mgmt_Approval()
- If IsNull(Forms!FrmCycleCountRequest![CC_Approval_Date]) Then
- If Not IsNull(Forms!FrmCycleCountRequest![CC_Approval_Initials]) Then
- Forms!FrmCycleCountRequest![CC_Approval_Date] = Date
- If Finance_Approval_Required = True Then
- Call Manage_Status("Approved-Mgmt")
- Else
- Call Manage_Status("Approved_Final")
- End If
- End If
- End If
- End Function