我在Access中有一个代码,当用户点击“保存”按钮时,它会向负责人发送电子邮件。代码将使用Outlook.application发送电子邮件。
代码工作正常,但如果没有设置outlook(即没有任何用户帐户设置的全新安装),那么我的电子邮件代码将被卡住,直到用户重新激活Access以确认错误。
Sub Send_Email()
Dim oApp As Outlook.Application
Dim oMail As MailItem
On Error GoTo MailErr
If IsNull(Email) Then
MsgBox "You do not have an email account! No email will be sent!" & vbNewLine & "Email updates will be sent to your supervisor!" Me.Email.Value = DLookup("[Email]", "tblEmployeeList", "EmpName = '" & Me.txtSupName & "'")
Else
Set oApp = CreateObject("Outlook.application")
Set oMail = oApp.CreateItem(olMailItem)
oMail.Body = "IT Incident " & Me.ReqID & " has been created."
oMail.Subject = "Alert: New IT Incident"
oMail.to = Forms!MainForm!lblITAdminEmail.Caption
oMail.Send
Set oMail = Nothing
Set oApp = Nothing
End If
MailErr:
'MsgBox Err
If Err = 287 Then
AppActivate "Microsoft Access"
MsgBox "Error 287: Mail not sent! Pls contact IT/BI"
ElseIf Err <> 0 Then
MsgBox "Pls contact BI/IT admin! Error " & Err & " occured!"
End If
Set oMail = Nothing
Set oApp = Nothing
End Sub
有没有办法在运行此代码之前使用VBA检查Outlook是否已正确设置?
答案 0 :(得分:0)
假设您至少使用Outlook 2007;看一下Outlook.Application对象的DefaultProfileName属性。如果没有创建配置文件或没有默认配置文件,这将返回一个空字符串。
您可以检查一下,但我相信Outlook配置文件可能存在,但其中没有配置实际的电子邮件帐户(例如,如果用户在中途中止设置向导)。在这种情况下,您可以查看包含Count属性的Accounts对象。显然,如果这是0,那么您知道配置文件中没有配置帐户。
一个如何实现此目的的简单示例。
Dim oApp As Outlook.Application
Set oApp = Outlook.Application
If Not oApp.DefaultProfileName = "" Then
If oApp.Session.Accounts.Count > 0 Then
' Send the e-mail
End If
End If
Set oApp = Nothing