Я работаю над базой данных для своей собственной организации за последние пару месяцев. Я использую Office 2013. Я взял код из Интернета для отправки по электронной почте своим клиентам с помощью Outlook. Но независимо от того, насколько я редактирую код, проблема все еще существует.Outlook закрывается при нажатии на отправку по электронной почте VBA.
Я установил свойство .Display
, чтобы пользователь мог видеть сообщение перед отправкой. Проблема в том, что он отображает мне сообщение, но когда я нажимаю кнопку отправки, он закрывает внешний вид. Однако, если я использую .Send
свойство почты, проблем нет.
ЦЕЛЬ: Я отправляю html-адрес электронной почты, я сохранил html-код в своей таблице, чтобы я мог получить шаблон при нажатии кнопки. Который будет доступен пользователю для дальнейшего редактирования. Альтернативы высоко ценятся! : D
Private Sub CmdEmail_Click()
Dim oApp As Object
Dim oMail As Object
Dim olAccount As Object
Dim olAccounts As Object
Dim olAccountTemp As Object
Dim vallL As String
Dim foundAccount As Boolean
Dim strFrom As String
On Error Resume Next
Set oApp = CreateObject("Outlook.Application")
Set oMail = oApp.CreateItem(olMailItem)
Set olAccount = oApp.Account
Set olAccountTemp = oApp.Account
strFrom = CompanyEmail
foundAccount = False
Set olAccounts = oApp.Application.Session.Accounts
For Each olAccountTemp In olAccounts
Debug.Print olAccountTemp.SmtpAddress
If (olAccountTemp.SmtpAddress = strFrom) Then
Set olAccount = olAccountTemp
foundAccount = True
Exit For
End If
Next
Set oMail.SendUsingAccount = olAccount
If foundAccount Then
Debug.Print "ACCT FOUND!"
With oMail
.BodyFormat = olFormatHTML 'Set body format to HTML
vallL = DLookup("[Memo]", "HtmlEmailT", "[ID] = 1") & "rs!CliName"
vallL = vallL & DLookup("[Memo]", "HtmlEmailT", "[ID] = 2") & "rs!InvoiceId"
vallL = vallL & DLookup("[Memo]", "HtmlEmailT", "[ID] = 3") & "rs!BalDue"
vallL = vallL & DLookup("[Memo]", "HtmlEmailT", "[ID] = 4") & "rs!InvoiceDate"
vallL = vallL & DLookup("[Memo]", "HtmlEmailT", "[ID] = 5") & "rs!InvTotal"
vallL = vallL & DLookup("[Memo]", "HtmlEmailT", "[ID] = 6")
.HTMLBody = vallL
.SendUsingAccount = olAccount
.SentOnBehalfOfName = """CompnayName"" <CompanyEmail>"
.Display
'.Send
End With
Else
Debug.Print "No acct found"
MsgBox "The chosen email is not signed in!!" & vbCrLf & "Please sign in first"
End If
Set oApp = Nothing
Set oMail = Nothing
Set olAccounts = Nothing
Set olAccount = Nothing
Set olAccountTemp = Nothing
End Sub
* Адрес электронной почты компании и название компании не являются полями.
Когда вы запускаете этот код, Outlook открыт уже или вы можете открыть Open Outlook? – Chrismas007
Приносим извинения, что не упоминаем об этом. Это происходит только тогда, когда внешний вид не открывается. Если он открыт, проблем нет. –
Удалить при ошибке Продолжить. Не используйте его для всего кода. После того, как причина использования прошла, вам нужно включить On Error Goto 0. Кажется, это не причина для ее использования. – niton